简单的KnockoutJS尝试 - foreach给出Unable进程绑定[property]未定义错误

时间:2017-09-01 21:17:06

标签: javascript jquery knockout.js

我试图使用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);

JS Fiddle Here

似乎没有潜入阵列,但我无法发现问题所在。我做错了什么?

1 个答案:

答案 0 :(得分:1)

data-bind的语法略有偏差。你需要一个等号而不是一个冒号。

data-bind: "foreach: phones"应为data-bind="foreach: phones"