我有以下木偶应用:http://slexy.org/view/s21ARG2QdP
我的问题是,当我在树中选择节点时,我会选择"选择"和"路由"警报。
但是当我再次选择节点时,我只看到"选择"。
如果我去同一个网址,不知何故我没有进入控制器功能。
有人知道我错过了什么吗?
谢谢Alex A。
答案 0 :(得分:1)
您的代码是正确的。你的问题"来自Backbone.History.navigate(fragment, options)
的实施。
让我们看看它:
navigate: function(fragment, options) {
if (!History.started) return false;
if (!options || options === true) options = {trigger: !!options};
// Normalize the fragment.
fragment = this.getFragment(fragment || '');
// Don't include a trailing slash on the root.
var root = this.root;
if (fragment === '' || fragment.charAt(0) === '?') {
root = root.slice(0, -1) || '/';
}
var url = root + fragment;
// Strip the hash and decode for matching.
fragment = decodeURI(fragment.replace(pathStripper, ''));
if (this.fragment === fragment) return;
this.fragment = fragment;
// Truncated
....
....
}
从这里你可以看到当当前片段等于新片段Backbone.History.navigate()
时,函数将退出,因此它不会触发你的控制器的动作。
我认为这种方法是处理路由的正确方法,如果你需要某种方式"刷新"对于当前视图,您可以使用以下几种技术之一:
整页刷新。
手动呼叫控制器的操作。