主干js:集合事件函数选项索引未定义

时间:2018-08-01 03:22:45

标签: backbone.js backbone-collections

我试图获取模型的索引值。但返回的未定义值。触发事件后如何获取索引值。

var Test=new Backbone.Collection();

Test.add({name:'gowtham',age:20});
Test.add([{name:'eswara',age:25},

{name:'sakthi',age:20}]);
console.log(JSON.stringify(Test));

Test.remove(Test.at(1));
console.log(JSON.stringify(Test));

Test.on('add',function(model, col, options) {
    console.log('added ' +model.get('name')+'at index '+ options.index);
});
Test.add({name:'ganesh',age:22});

1 个答案:

答案 0 :(得分:0)

在您的示例中,我看不到任何尝试输出模型索引的尝试

Test.on('add',function(model, col, options) {
    console.log('added ' +model.get('name')+'at index '+ `options.index);`
});

也许只是错字。

默认情况下,主干add事件回调具有以下三个参数:modelcollectionoptions,并且没有索引,因此您必须自己获取它< / p>

我在这里提供有关如何获取已添加模型索引的代码段 以及如何在特定索引处添加模型

您仍然可以在此处查看其他信息:backbonejs.org

let test = new Backbone.Collection([{},{},{}]);

test.on('add', (model, collection) => {
	console.log('index is: ', collection.indexOf(model))	
});

let model1 = test.add({});
// console: index is: 3

test.add({}, { at:0 });
// console: index is: 0

console.log('model new index: ' + test.indexOf(model1))
// console: model new index:  4
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js"></script>