KnockoutJS变量

时间:2012-06-21 10:48:48

标签: knockout.js

我有以下对象定义

 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'); 我得到了同样的错误。任何想法都会有所帮助

1 个答案:

答案 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>

我没有测试过这个,但希望你能得到这个想法。