javascript - Marionette 未导航到同一网址

标签 javascript backbone.js marionette

我有以下 Marionette 应用程序:http://slexy.org/view/s21ARG2QdP

我的问题是,当我选择树中的节点时,我收到“已选择”和“已路由”警报。

但是当我再次选择该节点时,我只看到“已选择”。

如果我转到相同的网址,我就无法进入 Controller 功能。

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

谢谢,亚历克斯 A。

最佳答案

您的代码是正确的。您的“问题”来自 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()函数将退出,因此它不会触发 Controller 的操作。

<小时/>

我认为这种方法是处理路由的正确方法,如果您需要对当前 View 进行某种“刷新”,您可以使用以下几种技术之一:

  1. 全页刷新。

  2. 手动调用 Controller 的操作。

关于javascript - Marionette 未导航到同一网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27107761/

相关文章:

javascript - 加载和滚动 javascript 代码不能在网页上一起工作

Django URL conf 和 Backbone.js 路由器

backbone.js - Backbone Marionette JS 路由器的工作原理

javascript - 当数组中给出级别时转换对象列表

javascript - 在 Node.js 中读取 XML 文件

javascript - Mongoose 的日期错误

javascript - 在主干中捕获超时事件

javascript - 在组件所有者中存储 React.js 状态

javascript - 如何监控输入的变化

javascript - 主干监听属性更改