2014-02-11 1 views
0

я имею некоторый выпуск перевод/замена значения данных-затруднительное с ko.mapping, вот что я пытался до сих пор, что это лучший способ, чтобы изменить значение отображения kò с помощью ko.extenders

мой взгляд

<span data-bind="translate: address.place"></span> 

ПРИМЕЧАНИЕ: address.place будет установлен ko.mapping от сервера

мой ViewModel

ko.bindingHandlers.translate = { 
     init: function (element, valueAccessor, allBindingsAccessor, viewModel) { 
      console.log(viewModel.address.city);// how i can get the cityName 

      if (viewModel.address.street._latestValue == "koeln") { 
       //set back city to cologne 
      } 

     }, 
     update: function (element, valueAccessor) { 
      //// 

     } 
    }; 

ответ

1

На самом деле это не имеет никакого отношения к плагину отображения KO. Предполагая, что вы правильно получаете исходные данные в свою модель просмотра (независимо от того, используете ли вы плагин сопоставления или нет), все, что делает ваш обработчик привязки, это изменение того, что отображается в пользовательском интерфейсе.

Вы можете получить доступ к другим членам вашей модели просмотра с помощью параметра в вашем обработчике привязки, который обычно называется bindingContext. См. this section of the KO docs для получения дополнительной информации.

Таким образом, вы могли бы переписать привязку обработчика следующим образом:

ko.bindingHandlers.translate = { 
     init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { 
      console.log(bindingContext.$data.address.city());// the cityName 

      if (bindingContext.$data.address.street._latestValue == "koeln") { 
       //set back city to cologne 
       bindingContext.$data.address.city('cologne'); 
      } 

     }, 
     /// add your update section if needed 
    };