2014-05-16 114 views
-3

我無法爲包含一些ko.observables的javascript對象設置新值。 我所獲得的價值是這樣的:設置javascript對象的屬性值

 var args= {"argBO":{"StateId":0,"StateName":"beijing","ShortName":"bij","IsActive":true,"CountryId":28,"errors":[],"CountryName":"China"}} 

,我試圖以如下分配新Statename的:

1. ko.utils.parseJson(args).argBO[StateName] = 'Assasw'; 
2. ko.utils.parseJson(args).argBO.StateName = 'Assasw'; 
3. ko.utils.parseJson(args).argBO.StateName('Assasw'); 

它不工作!你能告訴我問題在哪裏,我該如何解決?

UPDATE:

var stateModel = { 
      StateId: ko.observable(0), 
      StateName: ko.observable('').extend({ required: true }), 
      ShortName: ko.observable('').extend({ required: true }), 
      IsActive: ko.observable(true), 
      CountryId: ko.observable().extend({ required: true }) 

     } 

    var args = JSON.stringify({ argBO: jQuery.parseJSON(ko.toJSON(stateModel)) }); 
+0

它是如何工作的?它拋出一個錯誤? –

+0

爲什麼你認爲'args.argBO'有正確的結構來添加到這種方式? –

+0

爲什麼你認爲你必須調用'parseJson'?這已經是一個對象。 –

回答

0

的主要問題是,分配新值,每次來解析對象未保存的價值!您需要:

  • 解析你的對象
  • 變化值
  • 保存當前對象的狀態(或覆蓋現有對象)

您可以訪問和之後改變對象的值使用JavaScript中許多可能的符號之一進行解析

object["propertyName"] = value

該代碼將屬性值更改爲New York

var argbo = ko.utils.parseJson(args).argBO; 
argbo["StateName"] = "New York"; 
alert(argbo["StateName"]);