Я пытаюсь понять компоненты нокаута 3.2, но я застрял.функции в компонентах нокаута (knockoutjs 3.2+)
У меня есть компонент «Клиенты»
ko.components.register("customers", {
viewModel: function (params) {
var self = this;
this.customers = ko.observableArray();
this.selectedCustomerId = ko.observable(1);
this.selectCustomer = function (data) {
selectedCustomerId(data.Id);
};
$.getJSON('http://localhost:49435/Customer/GetCustomers', this.customers);
},
template: "<div><table class=\"table table-condensed table-responsive\"><thead><tr><th>Customer ID</th><th>Name</th><th>City</th></tr></thead><tbody data-bind=\"foreach: customers\"><tr><td data-bind=\"text: Id\"></td><td data-bind=\"text: Name, click: $root.selectCustomer\"></td><td data-bind=\"text: City\"></td></tr></tbody></table></div>"
});
Но при связывании, я получаю следующее сообщение об ошибке:
Unable to process binding "click: function(){return $root.selectCustomer }" Message: Cannot read property 'selectCustomer' of undefined
Следующая вещь, которую я хочу сделать, это общение с selectedCustomerId
к другому компоненту. Возможно ли это с помощью PubSub Synchronization и как это возможно. Может кто-нибудь дать мне подсказку, с чего начать.
Вы называете ko.applyBindings в любом месте? Если это так, я думаю, что модель, которая передается ему как параметр, считается $ root. Попробуйте использовать $ parent вместо $ root. –
Это находится в ko 3,3 milestone https://github.com/knockout/knockout/issues/1449 – huocp