2013-11-21 3 views
1

Это обновляет значения на интерфейсе:нокаута не обновляет значения через отображение

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 не может отслеживать их больше.

Что вам нужно обновить PortfolioGeneral свойства из данных вашего item объекта, вы можете сделать это с помощью следующего синтаксиса:

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 
); 
Смежные вопросы