2016-03-08 72 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