使用Knockout映射插件在子数组的成员上定义计算可观察对象
Defining computed observables on members of child array using Knockout mapping plugin
我有以下内容:
// 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);
然而,我不能让'cards'绑定工作-除非我删除'create'方法,否则代码无法到达。我试着从敲除网站的例子:
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);
}
我花了一天的时间在这个问题上,但我怎么也弄不明白为什么这不起作用。任何建议都很棒。
编辑:这是我正在处理的一个小提琴。它只在结果中显示SIDE 1,因为这里无法识别"编辑":
<div data-bind="visible: !$parent.editing()" class="span5 side-study-box">
http://jsfiddle.net/PTSkR/1/这是我在chrome中得到的错误,当我运行它:
未捕获错误:无法解析绑定。Message: TypeError: Object没有"编辑"方法;$parent.editing()
您已经覆盖了视图模型的create
行为。映射插件不会为您调用属性的任何其他处理程序。因为你是从create
方法中映射的,所以把你的cards
处理程序移到那里。
var mapping = {
create: function(options) {
var innerModel = ko.mapping.fromJS(options.data, {
'cards': {
create: function (options) {
debugger;
return new CardViewModel(options.data);
}
}
});
innerModel.cardCount = ko.computed(function () {
return innerModel.cards().length;
});
return innerModel;
}
};
更新小提琴
你不需要有括号。我刚从
!$parent.editing()
to
!$parent.editing
查看更新后的小提琴在这里
相关文章:
- 可以't计算自定义谷歌地图的js
- 如何在自定义指令中获取计算的属性
- Ember服务在注入组件并在计算属性中使用后是未定义的
- 对于使用传递的数据计算的局部范围变量,角度绑定在自定义指令中不起作用
- Tracker重新计算函数出现异常:无法读取属性'0'的未定义
- 如何将我通过JavaScript计算的自定义金额作为金额发送到PHP表单
- ember.js计算属性中this的值是如何定义的
- 取消计算列的自定义绑定
- Ember-自定义计算属性,用于检查是否存在所有依赖字段
- 基于计算定义css元素
- Knockout.js:在可选定义的值上计算可观察性
- 在 Select 脚本中调用 Knockout 计算 Var 时,如何定义它
- Javascript/Html 未捕获的引用错误:赋值中的左侧无效;未捕获的引用错误:未定义计算
- 自定义计算函数煎茶触摸
- 未捕获的引用错误: 未定义计算总计
- 模板化`<中的自定义计算函数;模板>`
- 自定义计算大数字的缓和方程
- 有没有很酷的方法来定义/计算PI使用延迟计算序列
- adobeacrobatpdf自定义计算
- 使用Knockout映射插件在子数组的成员上定义计算可观察对象