Knockout вызывает функцию подписки перед отображением представления - PullRequest
0 голосов
/ 05 июня 2018

Knockout вызывает функцию подписки перед визуализацией представления даже без атрибута beforechange, когда используется с arrayChange param.

Я создал JSfiddle, потому что StackOverflow игнорирует ключевое слово debugger; в коде JavaScript, и этоэто самый простой способ увидеть это поведение. JSfiddle

Есть ли способ сообщить KnockOut о вызове функции подписки после рендера?

Мне нужно сделать это с подпиской, она используется для пользовательской привязки и можетне может вызываться afterRender или подобными функциями обработки представления.

1 Ответ

0 голосов
/ 05 июня 2018

Вы можете предоставить метод в вашей модели представления для создания подписки, а затем вызвать его в виртуальной машине после вызова ko.applyBindings:

function ViewModel(){
    var self = this;

    this.items = ko.observableArray([]);
    this.push = function(){
      self.items.push((Math.random(10)*10).toFixed(0));
      console.log("PUSH");
    }

    this.subscribeAfterApply = function(){
      this.items.subscribe(changes=>{
        console.log("SUBSCRIPTION FIRED");
      }, null, "arrayChange");
      console.log("SUBSCRIBED");
    }
}

var vm = new ViewModel();

ko.applyBindings(vm);
vm.subscribeAfterApply();
...