Knockout无法处理绑定

时间:2015-01-24 14:34:15

标签: knockout.js

如果文本未定义,如何绑定文本?例如,名称不可用:

<table id="recordTbl" data-bind="visible: records().length &gt; 0" class="table">
  <thead>
    <tr>
      <th class="col-md-4">ID</th>
      <th class="col-md-4">Name</th>
    </tr>
  </thead>
  <tbody data-bind="foreach: records">
    <tr>
      <td data-bind="text: id"></td>
      <td data-bind="text: name"></td>
    </tr>
  </tbody>
</table>

我收到此错误:

Uncaught ReferenceError: Unable to process binding "text: function (){return name }"
Message: name is not defined 

1 个答案:

答案 0 :(得分:1)

您可以使用$data绑定上下文属性,它始终代表当前视图模型通过它访问name

  <tbody data-bind="foreach: records">
    <tr>
      <td data-bind="text: id"></td>
      <td data-bind="text: $data.name"></td>
    </tr>
  </tbody>

使用此方法,如果records中的某个项目没有name属性,KO将不会抛出异常。

如果没有$data,则名为name的标识符未定义。但是,$data.name始终是一个有效的表达式,如果当前视图模型没有名为undefined的属性,它只返回name