木偶不会导航到同一个网址

时间:2014-11-24 15:00:17

标签: javascript backbone.js marionette

我有以下木偶应用:http://slexy.org/view/s21ARG2QdP

我的问题是,当我在树中选择节点时,我会选择"选择"和"路由"警报。

但是当我再次选择节点时,我只看到"选择"。

如果我去同一个网址,不知何故我没有进入控制器功能。

有人知道我错过了什么吗?

谢谢Alex A。

1 个答案:

答案 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()时,函数将退出,因此它不会触发你的控制器的动作。


我认为这种方法是处理路由的正确方法,如果你需要某种方式"刷新"对于当前视图,您可以使用以下几种技术之一:

  1. 整页刷新。

  2. 手动呼叫控制器的操作。