Как я могу получить длину отложенной модели в CanJS?

Я получаю модель отложенного объекта со структурой, подобной этой:

Как я могу узнать, сколько объектов присутствует внутри этого объекта (в данном случае три). Если я использую Object.keys(myObject).length, он включает в себя объект наблюдателя и другие данные, такие как _computeBindings,_bindings и т. д. Я даже пытался использовать hasOwnProperty при расчете длины, но это не дает мне желаемого результата.

Один из способов, который я могу выяснить, - это перебрать индекс и получить последнее значение индекса, например:

can.each(myObject,function(myObject,index){
// Get the last index value and put it into some variable
});

Есть ли API для этого?

3 ответа

Решение

can.Map имеет функцию keys, которая даст вам массив ключей на вашей карте, и из этого вы можете получить количество объектов, проверив длину этого массива.

Использование can.List в качестве структуры данных также будет работать. Ключи в ваших данных являются числовыми, и вам нужно проверить длину, все вещи, для которых построен. Список.

Атрибут модели _data содержит копию только модели без привязок. Самый простой способ сделать это - использовать:

Object._data.length    

Попробуйте использовать myObject.attr('length')

Другие вопросы по тегам