我在應用程序中有像添加一個新行,刪除一個新行的應用程序。所有的東西都工作正常。就像我第一次加載數據從項目(我有這麼多viewmodel綁定在一個單一的頁面),那裏所有的數據似乎按預期工作(無論何時編輯值,更新我的視圖模型)。但是當我加載第二個時間,視圖模型沒有像預期的那樣更新。即使我編輯了數據,視圖模型也保持着相同的數據。我認爲observable不能正常工作。請謹慎地告訴我在哪裏做錯了。從JSON加載值不更新(如可觀察)敲除
首播時間:
function ViewModel() {
var self = this;
//Available types - which will come from serverside
self.typeDropDown = ko.observableArray(InitialData);
self.typeValue = ko.observable();
//Explicitly Adding new Row
self.Inputs = ko.observableArray([new Item(self.typeDropDown[0], '', '', '')]);
self.removeRow = function (Item) {
self.Inputs.remove(Item);
},
self.addNewRow = function() {
//push will add a new element to the container without modifying much in DOM
self.Inputs.push(new Item(self.typeDropDown[0], '', '', ''));
}
function Item(Type, StrData, MaxData, Back) {
var self = this;
self.Type = ko.observable(Type),
self.Storage = ko.observable(StrData),
self.MaxIOPS = ko.observable(MaxData),
self.BackupPercentagePerMonth = ko.observable(Back)
}
第二次 - 從服務器加載數據。從服務器
採樣輸入結構:
strJSON = [
{
Type: storageInitialData[0].Value,
Str: '12',
Max: '156',
Back: '123'
},
{
Type: storageInitialData[0].Value,
Str: '12',
Max: '156',
Back: '123'
}, {
Type: storageInitialData[0].Value,
Str: '12',
Max: '156',
Back: '123'
}
];
function ViewModel() {
var self = this;
//Available types - which will come from serverside
self.typeDropDown = ko.observableArray(InitialData);
self.typeValue = ko.observable();
//Explicitly Adding new Row
self.Inputs = ko.observableArray(strJSON);
self.removeRow = function (Item) {
self.Inputs.remove(Item);
},
self.addNewRow = function() {
//push will add a new element to the container without modifying much in DOM
self.Inputs.push(new Item(self.typeDropDown[0], '', '', ''));
}
是ko.observableArray(strJSON)是不夠的,設置觀察特性在數組中的元素?我是否需要再次調用Item方法?
更新
我的下拉是這樣
<select class="ddText" id="selType" style="width: 100px"
data-bind="options:typeDropDown, optionsText: 'Value', optionsValue: 'Value',value : (Type.Value)?Type.Value : Type,attr: { name: 'str',id : 'strType_'+$index()}, uniqueName:true" ">
</select>
謝謝this worked.but,當我重新發送數據textboxe值正確更新,但下拉值不更新。這就是我如何更新下拉值的值:(Hyper.Value)?Hyper.Value:Hyper.am我這樣做是正確的,或者爲了我需要編寫一個自定義的價值的值:selectedvalue。 – codebot
更新您的問題以顯示您現在使用的代碼。 – ebohlman
:我已經更新了這個問題。 – codebot