gpt4 book ai didi

javascript - crossroads.js 的哈希错误

转载 作者:行者123 更新时间:2023-11-28 21:05:41 24 4
gpt4 key购买 nike

我正在一起测试 crossroads.jshasher.js 以及第二次 setHash 调用上的以下代码错误,其中包含“Function.prototype.apply:参数不是对象”。这在 IE 和 Chrome 中都是如此。

crossroads.addRoute( 'lorem/{id}', function( id ) { alert( id ); } );

hasher.changed.add( crossroads.parse, crossroads );
hasher.init();

hasher.setHash('lorem/123'); // works with alert(123)
hasher.setHash('lorem/456'); // javascript error

我在这里做错了什么吗?第一个 setHash 显示警报正常。

最佳答案

我已经弄清楚问题出在哪里了。 crossroads.parsehasher.changed 信号签名(request、defaultArgs)错误,不应直接使用以下代码添加:hasher.changed .add(crossroads.parse, crossroads)。如果我传入带有签名的代理方法(newHash,oldHash),它会起作用:

crossroads.addRoute( 'lorem/{id}', function( id ) { alert( id ); } );
var proxy = function( newHash, oldHash ) { crossroads.parse( newHash ); };

hasher.changed.add( proxy ); // Use to be hasher.changed.add( crossroads.parse, crossroads );
hasher.init();

hasher.setHash('lorem/123');
hasher.setHash('lorem/456');

它第一次工作的原因是因为没有 oldHash ,所以没有 defaultArgs 。如果 defaultArgs 为空,则在 parse 方法开头将其初始化为空数组。

但这有点太好了,因为现在我每次 setHash 调用都会收到两个警报。

关于javascript - crossroads.js 的哈希错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9937071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com