Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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

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 有没有一种方法可以让“有条件的”;加上「;backbone.js中的事件?_Javascript_Backbone.js - Fatal编程技术网

Javascript 有没有一种方法可以让“有条件的”;加上「;backbone.js中的事件?

Javascript 有没有一种方法可以让“有条件的”;加上「;backbone.js中的事件?,javascript,backbone.js,Javascript,Backbone.js,我在我的web应用程序中使用backbone.js,到目前为止它运行得还不错。问题是,有时我需要将项目添加到集合中,并使它们位于页面顶部,有时则位于页面底部。有时我需要它们来制作动画,有时不需要。有没有一种方法可以用backbone.js干净利落地做到这一点?将参数传递给“add”事件将是一个好方法(例如“prepend:true”),但这似乎不是一个选项 谢谢 扩展主干。收集并覆盖添加功能: PositionCollection = Backbone.Collection.extend ({

我在我的web应用程序中使用backbone.js,到目前为止它运行得还不错。问题是,有时我需要将项目添加到集合中,并使它们位于页面顶部,有时则位于页面底部。有时我需要它们来制作动画,有时不需要。有没有一种方法可以用backbone.js干净利落地做到这一点?将参数传递给“add”事件将是一个好方法(例如“prepend:true”),但这似乎不是一个选项


谢谢

扩展主干。收集并覆盖添加功能:

PositionCollection = Backbone.Collection.extend ({
  add: function( model, options ){
    // do your stuff
    // call the real add
    Backbone.Collection.prototype.add.call(this, model);
  }
});
要记住的唯一一件事是,如果您预先编写了append,您可能希望复制Backbone.Collection.add并使用它


您还可以依赖集合排序。将您的位置和动画属性添加到模型中,对位置进行排序,并收听集合中的“添加”事件以正确设置动画。

Julien说了什么…(他似乎是一位backbone.js大师)谢谢您,这既优雅又干净。嗯,发生了一些奇怪的事情。如果我这样做(我只是将它添加到集合声明中,因此它是Backbone.collection.extend({model:MyModel,add:});),当我尝试运行它时,我会得到“this.model.get不是函数”(错误在视图的render()方法中)。我已决定将集合中的一些实例变量设置为当前的标志,尽管这是不干净的,但效果很好。查看此页面的人员的一般提示:与其覆盖内置的add方法,不如尝试向“add”添加绑定模型/集合中的事件。这比处理Javascript调用父方法的方法更简单。这假设您不想阻止默认行为。Dave,集合的add事件是否首先被激发/在可能侦听该集合add事件的任何其他视图之前被激发?如果这是依赖行为,我认为“被接受”的答案可能是唯一的办法,尽管我不确定。