2016-03-08 44 views
1

我想为我的_reaas数组中的每个项目添加<option>KnockoutObservableArray<string>类型的数组。但是当我这样做:敲除js foreach绑定显示[对象对象]

<select 
      multiple="multiple" 
      class="select-multiple" 
      data-bind="foreach: _regionGetter._areas"> 
      <option data-bind="text: $data"></option> 
     </select> 

它打印出每个<option>内的[object object]。我如何获得它打印数组中的字符串而不是[对象对象]?

回答

1

这是因为您可观察数组中的项目是对象,然后您使用的是$data,因此将显示[object object]。如果项目是字符串,则只能在此实例中使用$ data。

改为将<option data-bind="text: $data"></option>改为使用包含要显示的文本的对象属性。

例如,如果对象有一个属性叫做name,那么你会使用<option data-bind="text: name"></option>

JsFiddle

+0

干杯的选项文字把它绑定。可观察数组是字符串类型。我不需要将它改为类型对象,除了给它命名的属性,以便我可以在我的'forearch'数据绑定中访问它们。看起来好像需要发生,而'foreach'绑定不能用在可观察的字符串数组上。 – BeniaminoBaggins

+0

您可以使用浏览器调试工具来验证它确实是一个字符串吗?当我将其更改为字符串时,代码将工作:[jsfiddle](http://jsfiddle.net/084um38L/) –

+0

我不确定如何在HTML代码上使用调试器。我只知道如何在我的JavaScript文件中使用它。这是战斗的一半,无法进行调试。 – BeniaminoBaggins