Knockout foreach无法访问对象

时间:2014-08-26 15:29:19

标签: knockout.js

我正在努力解决这个问题好几个小时了,我不知道

我有一个最初为空的可观察数组,这是一个简化版本:

var AppModel = function(data){
    var self=this;

    self.found=ko.observable(   
      {      
        hits:ko.observableArray([])
      }
    );    

};

稍后我会从普通的json

中获得api的一些结果
console.dir(response.data.hits);
self.found().hits(response.data.hits);

这是console.dir的输出:

![console dir] [1]

当我现在输入控制台时:

appModel.found().hits() 

它返回:

![在此输入图片说明] [2]

所以一切看起来都很不错

我想要做的是一个foreach绑定:

            <div data-bind="foreach: found().hits()">
                <div class="box">
                    <p data-bind="value: $data.id" ></p>
                    <p data-bind="value: JSON.stringify($data)" ></p>
                    <p data-bind="value: id" ></p>
                    <p data-bind="value: nameFull" ></p>
                    <p data-bind="value: $data.nameFull" ></p>
                    <p data-bind="value: function(){ return this.nameFull }" ></p>

                </div>
            </div>

和“.box”会呈现10次,但

标签中没有值

看起来像:

enter image description here

所以你看我无法访问这些属性,我做错了什么?

unfoirtunatly我不能设置一个小提琴, 有人有想法吗?我真的尝试了我所知道的一切......之前我做了很多foreach绑定,我完全不知道

1 个答案:

答案 0 :(得分:2)

您需要为text类型绑定value而不是p。值绑定适用于input类型。

示例:

<div data-bind="foreach: found().hits">
    <div class="box">
        <p data-bind="text: id"></p>
        <p data-bind="text: nameFull"></p>
    </div>
</div>

http://jsfiddle.net/bvz5fkpy/

关于价值约束的文件:

http://knockoutjs.com/documentation/value-binding.html

  

这通常适用于<input><select><textarea>等表单元素。

文字装订文档:

http://knockoutjs.com/documentation/text-binding.html

  

通常,这对于传统上显示文本的<span><em>等元素很有用,但从技术上讲,您可以将它与任何元素一起使用。