我正在努力解决这个问题好几个小时了,我不知道
我有一个最初为空的可观察数组,这是一个简化版本:
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次,但
标签中没有值
看起来像:
所以你看我无法访问这些属性,我做错了什么?
unfoirtunatly我不能设置一个小提琴, 有人有想法吗?我真的尝试了我所知道的一切......之前我做了很多foreach绑定,我完全不知道
答案 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://knockoutjs.com/documentation/value-binding.html
这通常适用于
<input>
,<select>
和<textarea>
等表单元素。
文字装订文档:
http://knockoutjs.com/documentation/text-binding.html
通常,这对于传统上显示文本的
<span>
或<em>
等元素很有用,但从技术上讲,您可以将它与任何元素一起使用。