2

我定义了以下对象

 function BusinessUnit(id, name, code) {
             this.id = ko.observable(id);
             this.name = ko.observable(name);
             this.code = ko.observable(code);
         }

在我的视图模型中,我定义了以下内容

this.selectedEntry = new BusinessUnit("", "", "");

并且它被绑定使用

$('#readID').attr('data-bind', 'text :  selectedEntry.id');

这是我得到的错误

无法解析绑定。消息:ReferenceError: selectedEntry 未定义;绑定值:文本:selectedEntry.id

我也试过$('#readID').attr('data-bind', 'text : $root.selectedEntry.id'); 了,我得到了同样的错误。任何想法都会有所帮助

4

1 回答 1

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>

我没有对此进行测试,但希望你能明白这一点。

于 2012-06-21T10:59:27.770 回答