我试图使用foreach绑定第一次使用KnockoutJS,但我一直收到错误:
未捕获的ReferenceError:无法处理绑定“text:function(){return PhoneTypeName}”消息:未定义PhoneTypeName
这是简化的HTML&可以在下面的jsfiddle链接中尝试的javascript:
HTML
<table>
<thead>
<tr>
<th>Type</th>
<th>Number</th>
<th></th>
</tr>
</thead>
<tbody data-name="personPhones" data-bind: "foreach: phones">
<tr >
<td>
<span data-bind="text: PhoneTypeName"></span>
</td>
<td>
<span data-bind="text: PhoneNumber1"></span>
</td>
</tr>
</tbody>
</table>
JS
function PhoneVM(data) {
if (!(this instanceof PhoneVM))
return new PhoneVM(data);
this.ID = ko.observable(data.ID);
this.PhoneTypeName = ko.observable(data.PhoneTypeName);
this.PhoneNumber1 = ko.observable(data.PhoneNumber1);
}
var p1 = new PhoneVM({id: 1, PhoneTypeName: 'Home', PhoneNumber1: '345-234-3455'});
var p2 = new PhoneVM({id: 1, PhoneTypeName: 'Home', PhoneNumber1: '345-234-3455'});
var arr = [p1, p2];
var vm = { phones: arr };
ko.applyBindings(vm);
似乎没有潜入阵列,但我无法发现问题所在。我做错了什么?
答案 0 :(得分:1)
data-bind的语法略有偏差。你需要一个等号而不是一个冒号。
data-bind: "foreach: phones"
应为data-bind="foreach: phones"