2014-09-03 23 views
0

這是我的模型:保存鍵,模式的價值沒有得到保存在範圍和重複輸入字段

{ aktuell: { N5: '8', Auftragsnr: 123 }, 
    historie: 
    [ 
    { some data }, 
    { more data } 
    ] 
}; 

我有這樣的HTML代碼:

<ul> 
<li> 
     <span ng-repeat="(key, value) in friends[0].aktuell" ng-show="key != '_id' && key != '__v'"> 
      {{key}}  
     </span> 
</li> 
<br> 
<li ng-repeat="friend in friends"> 
     <span ng-repeat="(key, value) in friend.aktuell" ng-show="key != '_id' && key != '__v'"> 
      <input type="text" ng-model="value"> 
     </span> 
     <button ng-click="save(friend)" class="btn btn-primary">Save</button> 
    </li> 
    </ul> 

會發生什麼:

當我點擊保存時,控制器會被正確觸發(並執行API請求等),但是任何輸入到輸入字段的新值都不會保存在朋友mo中del(範圍)。我試過鉻Batarang,然後輸入一個值新的輸入字段時,範圍不發生變化,見截圖:

enter image description here

預期的行爲:

預期的行爲是保存新「朋友模型」的「aktuell」成員中的「N5」值。

更新:固定的同時, 「雙輸入」 欄錯誤

回答

2

試試這個

<li ng-repeat="friend in friends"> 
     <span ng-repeat="(key, value) in friend.aktuell" ng-show="key != '_id' && key != '__v'"> 
      <input type="text" ng-model="friend.aktuell[key]"> 
     </span> 
     <button ng-click="save(friend)" class="btn btn-primary">Save</button> 
    </li> 
+0

由於@ dhavalcengg的回答指出,您需要指定「值」在朋友對象中的位置。所以在你的例子中,你需要ng-model =「friend.akuell ['N5']」在你的輸入 – catalyst294 2014-09-03 15:30:58

+0

@ catalyst294上如果你這樣做,它會被硬編碼..我們不希望這.. :) :) – dhavalcengg 2014-09-03 15:33:34

+0

我並不是建議硬編碼它,只是試圖用問題中的示例回答一些解釋。 – catalyst294 2014-09-03 15:43:49

0

變化ng-model="value"friend.aktuell[key]

變量value未引用 '8'你的「friend.aktuell」對象中的「N5」,而是它的「副本」,因爲'8'或'123'或'test'是一個字符串/數字(不可變的原語),而不是對象(可變對象)。

對不可變原語的賦值不是引用(在Javascript中,字符串也被認爲是不可變的原語)。

keyvalue是範圍變量時,你每次重複項(span在你的例子)得到它自己的範圍內使用ng-repeat該角內部創建。

爲了說明,假設ng-repeat簡單地將執行以下操作,

for (var k in friend.aktuell) { 
    if (friend.aktuell.hasOwnProperty(k)) { 
    var key = k; 
    var value = friend.aktuell[k]; 
    } 
} 

這裏修改value將更新friend.aktuell[k]僅當friend.aktuell[k]是可變對象。