я следующее:Определение вычисляемых наблюдаемых на членов массива с использованием детского Нокаут отображения плагин
// Child Array is Cards, trying to add computed observable for each child
var CardViewModel = function (data) {
ko.mapping.fromJS(data, {}, this);
this.editing = ko.observable(false);
};
var mapping = {
'cards': { // This never gets hit, UNLESS I remove the 'create' method below
create: function (options) {
debugger;
return new CardViewModel(options.data);
}
},
create: function(options) {
var innerModel = ko.mapping.fromJS(options.data);
innerModel.cardCount = ko.computed(function() {
return innerModel.cards().length;
});
return innerModel;
}
};
var SetViewModel = ko.mapping.fromJS(setData, mapping);
debugger;
ko.applyBindings(SetViewModel);
Однако я не могу получить «карты» обязательным для работы - этот код не будет достигнуто, если я не удалить метод «создать». Я пытаюсь следовать примеру с сайта выбывания:
http://knockoutjs.com/documentation/plugins-mapping.html
Они делают это для определения объекта ребенка:
var mapping = {
'children': {
create: function(options) {
return new myChildModel(options.data);
}
}
}
var viewModel = ko.mapping.fromJS(data, mapping);
С ChildModel определенного так:
var myChildModel = function(data) {
ko.mapping.fromJS(data, {}, this);
this.nameLength = ko.computed(function() {
return this.name().length;
}, this);
}
Я провел прошлый день на этом и не могу для жизни меня понять, почему это не работает. Любые советы были бы удивительными.
EDIT: Вот скрипка того, с чем я работаю. Это только показывает СТОРОНА 1 в результате, потому что «редактирование» не признается здесь:
<div data-bind="visible: !$parent.editing()" class="span5 side-study-box">
Это ошибка я получаю в хроме, когда я запускаю его:
Uncaught Error: Unable to parse bindings. Message: TypeError: Object has no method 'editing'; Bindings value: visible: !$parent.editing()
вы можете поставить скрипку так легко для нас? – DevelopmentIsMyPassion
Просто добавил один, спасибо Ash – SB2055