Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.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 取消在集合中创建模型。混战_Javascript_Backbone.js_Backbone.js Collections - Fatal编程技术网

Javascript 取消在集合中创建模型。混战

Javascript 取消在集合中创建模型。混战,javascript,backbone.js,backbone.js-collections,Javascript,Backbone.js,Backbone.js Collections,需要创建一个处理程序,该处理程序不提供create REPLICATE Collection = Backbone.Collection.extend({ model : Model, initialize : function() { this.on('add', this.actionCreate, this); }, actionCreate : function(model, collection, param) { //

需要创建一个处理程序,该处理程序不提供create REPLICATE

Collection = Backbone.Collection.extend({
    model : Model,
    initialize : function() {
        this.on('add', this.actionCreate, this);
    },
    actionCreate : function(model, collection, param) {
        // handler...
    }
});
collection = new Collection();
collection.add({ chanel : 'starladder' });
// Should not be created because the parameter 'chanel' already exists with this value
collection.add({ chanel : 'starladder});
我已经准备好试着写下这样的话:

if( this.where({ chanel : model.get('chanel').length } ) { model.destroy(); }

但是不起作用。

有很多方法可以做到这一点:)

首先,您可以在添加之前进行检查!这样就不用担心使用Collection.remove()或Model.destroy()了

作为旁注,这里您可能需要Collection.remove()而不是Model.destroy(),因为您新添加的模型似乎没有id,所以不需要可能的服务器往返

其次,您的处理程序似乎有一些问题。where()将返回一个数组,因此需要检查返回值的.length是否大于0。或者您也可以像上面一样使用findWhere,它将执行与where相同的操作,但返回该数组的第一个值,因此您不必担心执行[0]来访问该模型

如果没有更多的细节,很难说什么是实现你想要的目标的最佳方式,但似乎你正在使用香奈儿作为一种独特的身份证。。。?那么,为什么不使用该属性让主干知道这是以独特的方式定义模型的原因呢?显然,这只有在你没有真正的ID的情况下才有效

如果您需要id和chanel都是唯一的,那么我只需要在添加之前做一个检查,就像您建议的那样,并在我的方式中+显然在服务器端添加相同的唯一性条件,因为您永远不知道+不允许用户在GUI中以任何方式选择相同的值两次(从select/dropdown/autocomplete中删除值,无论什么)

if(!this.collection.findWhere({chanel: 'starladder'}))
  ...add...