Knockout文本绑定显示值

时间:2015-06-23 08:14:47

标签: javascript jquery knockout.js

我正在尝试将一个元素绑定到段落标记。它无法正常工作,并且在浏览器中没有出现任何错误。我正在使用Visual Studio进行开发。 我创建了一个显示问题的小提琴,并且我得到了我的绑定未定义的错误。

    function checking(obj)
{
    var self = this;    
    self.check = ko.observable(obj.count);
    alert(self.check());
};

function MyVM()
{
    var self = this;    
    self.MyArr = ko.observableArray();        
    var myObj = {count: 4};

    self.function1 = function(){

       self.MyArr.push(new checking(myObj));        
    };

    self.function1();

}

ko.applyBindings(new MyVM(), document.getElementById('myId'));

我的HTML:

<div id = "myId">
    <p data-bind="text: check"></p>
</div>    

我知道如果我在MyVM()中定义检查字段然后它会工作,但我想使用cheking(obj)中的check字段。什么是实现这一目标的正确方法。

这是链接 http://jsfiddle.net/6ymx8vja/

1 个答案:

答案 0 :(得分:1)

尝试构建与viewModel类似的视图

查看:

<div data-bind="foreach:MyArr">
    <p data-bind="text: check"></p>
</div>  

<强>视图模型:

function checking(obj)
{
    var self = this;    
    self.check = ko.observable(obj.count);
};

function MyVM()
{
    var self = this;    
    self.MyArr = ko.observableArray();        
    var myObj = {count: 4};
    self.function1 = function(){
       self.MyArr.push(new checking(myObj)); //your `check` is present inside observableArray so you need to get hold of observableArray to access its inside content      
    };
    self.function1();
}
ko.applyBindings(new MyVM());

工作小提取 here

如果您不想在视图中使用foreach,您可以直接通过索引访问 喜欢 this