Я пытаюсь использовать пользовательские элементы нокаута в своем приложении, но у меня есть одна проблема. У меня есть два вложенных пользовательских элемента, и я хочу, чтобы они общались. Я пытался поделиться наблюдаемым между ними, но я постоянно получаю сообщение об ошибке: Unable to process binding "template: function(){return { nodes:$componentTemplateNodes} } Message: someVariable is not defined
- внутренний компонент не может получить доступ к наблюдаемому. Как это исправить? Или, может быть, есть лучший способ общения между вложенными компонентами? Я использую нокаута 3.3.0Связь между вложенными компонентами в Knockout.js
мой код:
HTML:
<parent-component params="variable: someVariable">
<child-component params="variable: someVariable"></child-component>
</parent-component>
ЯШ:
ko.components.register("parent-component", {
viewModel: function (params) {
this.params = params;
},
template: "<div data-bind='text: params.variable'></div> <!-- ko template: { nodes: $componentTemplateNodes } --><!-- /ko -->"
});
ko.components.register("child-component", {
viewModel: function (params) {
this.params = params;
},
template: "<div data-bind='text: params.variable'></div>"
});
ko.applyBindings({
someVariable: ko.observable(true)
});
демо:http://jsfiddle.net/50zbtxe3/
Лучший ответ на сегодняшний день. Простой, хранящийся в компоненте упаковки, чтобы дети не имели дело с родительским макетом. Люблю это! – k2snowman69
Спасибо, @ k2snowman69 работают слишком много раз со сложными решениями, написанными мной :) – codevision