2013-11-21 162 views
1

更新值。這在UI更新值:淘汰賽不通過映射

PortfolioGeneral.CompanyName(item.CompanyName); 

我可以手工編寫這些值的手,而是我想用一個映射。然而,這是行不通的:

PortfolioGeneral = ko.mapping.fromJS(item); 

ko.applyBindings在調用以下函數之前已被調用。此調用應更新所有模型值。

function getPortfolioGeneral(portfolioId, PortfolioGeneral) { 
    $.ajax({ 
     url: "/api/portfolio", 
     contentType: "text/json", 
     dataType: "json", 
     type: "GET", 
     data: { id: portfolioId }, 
     success: function (item) {    
      //PortfolioGeneral = ko.mapping.fromJS(item);  
      PortfolioGeneral.CompanyName(item.CompanyName); 
     }, 
     error: function (data) { 
     } 
    });  
} 

回答

2

隨着PortfolioGeneral = ko.mapping.fromJS(item);你是壓倒一切的所以PortfolioGeneral你原來的可觀察屬性的值使用的語句會用新的更換,以KO無法跟蹤他們了。

你需要的是更新您item對象的數據你PortfolioGeneral屬性,可以使用以下語法做到這一點:

ko.mapping.fromJS(
    item, // the source object what you want to map 
    {}, // the mapping options if you want something mapped special 
    PortfolioGeneral // the target object which you want to be updated 
);