Метод преобразования не работает в нокауте js postbox

Я использую плагин "нокаут-пост", чтобы следовать шаблону паба в нокауте. Я могу получать и отправлять данные между компонентами, но проблема в том, что я не могу использовать функцию преобразования.

Ниже приведен код и ссылка на скрипку. Может кто-нибудь, пожалуйста, скажите мне, что я делаю здесь неправильно

  <div id="container1">
        First View Model:
      <input type="text" data-bind="value: data1">      

    </div>
    <br/>
     <div id="container2">
     Second View Model:
       <span data-bind="text: data2"></span><br/>
        <span data-bind="text: newData"></span>
    </div> 

а вот и моя модель

function Container1ViewModel()
{
    var self = this;
    self.data1 = ko.observable(false).publishOn("showDiv"); 

} 
function Container2ViewModel() {
    var self = this;
    this.data2 = ko.observable().subscribeTo("showDiv", true,transform);
    this.newData = ko.observable('45');
    var transform = function(newValue) {
    newData(newValue);
    return 123;
};

}


var container1VM;
var container2VM;

        container1VM = new Container1ViewModel();
        ko.applyBindings(container1VM, document.getElementById("container1"));

        container2VM = new Container2ViewModel();
        ko.applyBindings(container2VM, document.getElementById("container2"));

Вот ссылка на скрипку Fiddle

Здесь я ищу то, чтобы установить значение другого, наблюдаемого через наблюдаемого абонента, используя функцию преобразования, чтобы я мог преобразовать данные и назначить их.

Спасибо

1 ответ

Вы забыли некоторые ссылки на себя, а также потеряли определение функции преобразования во второй ViewModel.

function Container2ViewModel() {
    var self = this;

    var transform = function(newValue) {
        self.newData(newValue);

        // this will ALWAYS be the value passed to self.data2
        return 123;
    };

    self.newData = ko.observable('47');
    self.data2 = ko.observable().subscribeTo("showDiv", true, transform);
}

Я обновил скрипку с рабочей версией кода: http://jsfiddle.net/0454h205/304/

Обратите внимание, что всегда возвращая "123" в преобразовании, получается, что наблюдаемым data2 всегда будет "123".

Другие вопросы по тегам