Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干路由未第一次触发_Javascript_Backbone.js - Fatal编程技术网

Javascript 主干路由未第一次触发

Javascript 主干路由未第一次触发,javascript,backbone.js,Javascript,Backbone.js,我已经开始学习Backbone.js。我已经为3个链接设置了一个简单的路由器。其中两个完全触发了路由,但有一个-下面代码中带有href=“#/active”的一个,在我先单击其他两个链接中的一个之前不会触发路由 Html是: Javascript: var Workspace = Backbone.Router.extend({ routes: { '*filter': 'setFilter' }, initialize: functi

我已经开始学习Backbone.js。我已经为3个链接设置了一个简单的路由器。其中两个完全触发了路由,但有一个-下面代码中带有
href=“#/active”
的一个,在我先单击其他两个链接中的一个之前不会触发路由

Html是:

Javascript:

var Workspace = Backbone.Router.extend({

    routes: {
        '*filter': 'setFilter'
    },

    initialize: function() {
        this.on('route:setFilter', this.setFilt);
    },

    setFilt: function(param) {
        app.TodoFilter = param || '';
        app.Todos.trigger('filter');
    }
});
app.TodoRouter = new Workspace();
Backbone.history.start();

路由器不是那样工作的,试试这种方式

路线:{

    'filter': 'setFilter',

    'active': 'activeRoter',

    'completed':'completedRouter'
},

 setFilter: function(){
    //Do something
  },

 activeRoter: function(){
   //Do something
  },
 completedRouter: function(){
   //Do something
  }

非常感谢,我使用的路由使用splat声明包含一个参数的默认路由-参数名为
filter
,它作为
setFilt(param)中的
param
参数传递
。我发现问题不在于我的路由本身。当我首先加载应用程序时,所有路由都可以正常工作。问题在于当我刷新页面时,我使用的是一个路由,例如url
http://localhost:5000/todo.html#/active
setFilt
函数在页面完全呈现之前被调用。然后我再次单击活动链接,发现我已经在正确的路线上,因此不会触发
setFilt
功能。我需要更多了解如何解决此问题,但这是一个教程,我正在这样做,我现在将继续。感谢您的帮助..

活动
的路线定义在哪里?