1

我是Angular的新手,想要學習。我試圖找到一種方法來綁定一些數量與他們的ID。這裏是我的模板:錯誤綁定到變量的複雜輸入,有效

"<div class='tableBorder'><label> <input ng-model='" + modelngQTY + "' type='number' name='{{value.DetailID}}' /> {{value.Text | lowercase}} </label> </div>" 

的modelngQTY是:

是獲取與此代碼生成
modelngQTY = "selectedOptions[value.CustomID].Details[value.DetailID].QTY"; 

不幸的是,對象是:

{"36":{"Details":{"107":{"QTY":2323232},"108":{"QTY":232323}}}} 

我希望它看起來像這樣:

{"36":{"Details":[{DetailID: "107", "QTY":2323232},{DetailID: "108","QTY":232323}]}} 

這是一個並排觀察兩者。我想要左邊的那個: enter image description here

右邊的版本非常難以通過ng-repeat循環。我擁有所有的數據,顯然我不知道如何編寫模型。我嘗試過{}和[],以及許多不同的ngmodel版本。我能得到的最好的版本是右邊的。

我已經做了大量的Google搜索,並且有大量關於如何過濾和使用ng-options進行ng-repeat的資源,但我幾乎找不到任何關於將數據插入模型中的任何事情格式。

我在這裏錯過了什麼?

回答

1

一種可能的解決這個存在於http://plnkr.co/edit/9wMZAD?p=info

這些地圖功能

vm.endingStructure= _.map(vm.beginningStructure, function(object, value) { 
    var newStructure = {}; 
    newStructure[value] = { 
     Details: _.map(object.Details, function(qtyObject, value) { 
     var arrayStructure = { 
      DetailID: value, 
      QTY:qtyObject.QTY 
     }; 
     return arrayStructure; 
     }) 
    }; 
    return newStructure; 
    }); 

變成{ "36": { "Details": { "107": { "QTY": 2323232 }, "108": { "QTY": 232323 } } } }[ { "36": { "Details": [ { "DetailID": "107", "QTY": 2323232 }, { "DetailID": "108", "QTY": 232323 } ] } } ]

+0

這看起來正是我要找的!謝謝!對不起,如果這是一個愚蠢的問題,但如果我改變newStructure它不會綁定到舊數據呢? – FrostyFire

+0

更正,除非您將地圖分配給包含原始數據的變量,否則原始數據不會更改。 – Ronald91

+0

如果您必須調用API來更新原始結構中的數據,則可以將ng-repeat html代碼綁定到這個新結構,並在更新調用中將其解析爲api調用中的原始代碼。您可以提供服務來處理新版本/舊版本的構建。 – Ronald91

0

假設你有一些$scope.values數組,你迭代,你可以這樣做:

<div class='tableBorder'> 
    <label> 
     <input ng-model="selectedOptions[value.CustomID].Details[values.length].QTY" 
       type='number' name='{{value.DetailID}}' 
       ng-change="selectedOptions[value.CustomID].Details[values.length].DetailID = value.DetailID" 
       type='number' name='{{value.DetailID}}'> {{value.Text | lowercase}} 
    </label> 
</div> 

基本上我已經使用ng-change啓動第二屬性。該指數基於$scope.values,您正在使用ng-repeat="value in values"這是什麼出現。如果這不是你的情況,那麼以其他方式設置索引。

CodePen:http://codepen.io/theblindprophet/pen/NArOwR

參考:Bind 2 models

+0

有什麼理由做這種迂迴的方式?爲什麼無法構建像樣的JSON數組? – FrostyFire

+0

您可以在控制器中完成大部分工作,但您沒有提供該代碼。這是一個「圓滿」的解決方案,只能在視圖中進行。 – theblindprophet

+0

你想在控制中看到什麼? – FrostyFire