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
Backbone.js 如何在我的路线中使用模型中的过滤器_Backbone.js - Fatal编程技术网

Backbone.js 如何在我的路线中使用模型中的过滤器

Backbone.js 如何在我的路线中使用模型中的过滤器,backbone.js,Backbone.js,如果我在我的集合中定义了如下过滤器: filterByEveryday: function(){ return this.models.filter( function(c) { return c.Everyday == true; }) } collection: Breakfast.foods.filterByEveryday() 我如何在路线中使用该过滤器来选择每天的早餐 我的路线是这样的(目前正在获取所有食物) 这里有一些问题

如果我在我的集合中定义了如下过滤器:

filterByEveryday: function(){
    return this.models.filter(
      function(c) { 
        return c.Everyday == true; 
      })
   }
collection: Breakfast.foods.filterByEveryday()
我如何在路线中使用该过滤器来选择每天的早餐

我的路线是这样的(目前正在获取所有食物)

这里有一些问题。
1.早餐.foods.FilterByVeryday()。长度返回0。即使我把测试改为真。我猜我用错了? 2.路线中似乎有很多逻辑,主干线是否正常?看起来它应该在视图中,但我不确定如何重构它并拥有每路由筛选器。
3.尝试将筛选后的集合传递给视图,如下所示:

filterByEveryday: function(){
    return this.models.filter(
      function(c) { 
        return c.Everyday == true; 
      })
   }
collection: Breakfast.foods.filterByEveryday()
给我

TypeError: Object [object Array] has no method 'bind' 

我想这也是错误的。

我会回答你的第一个和第三个问题。关于逻辑,我想说做你想做的;)但请记住,按照您的方式,如果有人两次导航到同一路线,您将两次提取您的收藏,以此类推

让我们开始吧。您可能认为您的筛选呼叫有问题。错。您的问题来自前面的一行:
breaken.foods.fetch()。默认情况下,AJAX调用是异步的。有些情况下,当您调用
过滤器时,您的数据尚未从服务器返回。因此,长度为0(集合本身的长度为0)。我邀请你看看我刚才回答的问题,看看在这里该怎么办

现在,关于收集的原因:
提供了一个错误。问题本质上并不是来自主干网。问题是您在创建的对象中如何处理它<代码>早餐.foods.filterByEveryday()
将返回一个数组,而不是集合。因此,当(我假设)您随后执行
this.collection.bind(…)
时,您试图将侦听器绑定到一个数组,该数组没有bind方法。我将让您在众多问题中找到一个解决方案,以收听子集合的事件。尽管如此,我还是坚持使用方法(从主干网0.9开始),它(可以说,但从我的角度来看)更好地绑定侦听器(更容易删除它们并设置上下文)


最后一句话,我要说的是,过滤器在你使用它的方式上是没有用的。以及在这种情况下使用的方法。

那么,这里的问题是什么?问题是我真的不知道如何使用过滤器,或者在哪里使用过滤器。您只是在获取后尝试过滤您的集合,还是只想获取数据的一部分?只获取部分就可以了。它只是一个用于数据存储的json文件。我正在更新这个问题,以便更好地显示我对汉克斯感到困惑的所有事情。很好的反馈。“Where”还返回一个数组,因此我在路由器中使用它时仍然会遇到问题,无法将集合限制为“每天”项。向视图的数据查询传递参数的常规主干方式是什么?“向视图的数据查询传递参数?”您是指
获取
?获取是从静态json文件获取数据。因此,我宁愿将其传递给视图,这样我就可以在那里运行过滤器,而不是fetch-没有可查询的api。我不知道是什么阻止了您获取数据,并在加载数据后在视图中执行绑定。你能更具体地说明哪一部分是问题吗(编辑你的问题,也许可以添加你观点中有趣的部分)。