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。我不知道是什么阻止了您获取数据,并在加载数据后在视图中执行绑定。你能更具体地说明哪一部分是问题吗(编辑你的问题,也许可以添加你观点中有趣的部分)。