如何修复knockoutjs中未定义的属性错误

时间:2013-11-22 10:12:07

标签: javascript knockout.js

  

大部分时间我在淘汰赛中为'undefined'属性收到一些错误。我在stackoverflow answer找到了同样的解决方案。它对于简单绑定很有效,但我的问题是我如何使用这种技术进行'foreach'绑定,就像我试过的那样

Demo here

  

以下代码无效

<table>
  <tbody data-bind="foreach: model.mappings">
    <tr>
     <td>
    <select data-bind="options:mappings.variableList, optionsText:'Key',optionsValue:'Value', value:mappings.selectedVariable>
    </select>
   </td></tr></tbody></table>
  

但是下面的代码正在运作

<table>
  <tbody data-bind="foreach:mappings">
    <tr>
     <td>
    <select data-bind="options:variableList, optionsText:'Key',optionsValue:'Value', value:selectedVariable>
    </select>
   </td></tr></tbody></table>
  

两者的Js相同:

var list = //some array
var arr =// [{variableList : list}];

var model={
mappings:ko.observableArray(arr)
}

ko.applyBindings......

1 个答案:

答案 0 :(得分:0)

想象一下你的“模特”是一个功能。在html中绑定时,您只能访问模型的局部变量。模型本身不可见,因为这超出了您的范围。映射是模型中的变量,这就是为什么只需编写foreach: mappings即可访问它。 model不是模型的一部分,它是模型......希望这有帮助。

此外,当您编写foreach: mappings时,您可以进入foreach循环,这就是为什么您不写mappings.PropertyName而只是写PropertyName

编辑:我对您帖子的评论完全错误,所以我将其删除了