我有以下对象定义
function BusinessUnit(id, name, code) {
this.id = ko.observable(id);
this.name = ko.observable(name);
this.code = ko.observable(code);
}
在我的viewmodel中,我定义了以下
this.selectedEntry = new BusinessUnit("", "", "");
并使用
进行绑定$('#readID').attr('data-bind', 'text : selectedEntry.id');
这是我得到的错误
无法解析绑定。消息:ReferenceError:selectedEntry是 没有定义的;绑定值:text:selectedEntry.id
我也试过$('#readID').attr('data-bind', 'text : $root.selectedEntry.id');
我得到了同样的错误。任何想法都会有所帮助
答案 0 :(得分:1)
看起来您需要在BusinessUnit()本身周围使用父包装器模型作为前缀。尝试引用viewmodel变量,然后是BusinessUnit及其周围的属性。
也有任何理由说明你使用'attr'属性进行绑定。你为什么不绑定标记?如果attr调用是在绑定之后,我不确定ko可能会'错过'绑定。 像这样:
function BusinessUnit(id, name, code) {
this.id = ko.observable(id);
this.name = ko.observable(name);
this.code = ko.observable(code);
}
function ViewModel() {
this.selectedEntry = new BusinessUnit("", "", "");
}
var vm = new ViewModel();
ko.applyBindings(vm);
绑定标记将是:
<div id="readID" data-bind="text: vm.selectedEntry.id"></div>
我没有测试过这个,但希望你能得到这个想法。