Я пытаюсь создать приложение с настраиваемыми компонентами, которые взаимодействуют с центральными поставщиками услуг, что прекрасно работает.Пользовательские компоненты для нокаута, которые не конфликтуют с моделью центрального представления
Вы можете увидеть пример на https://github.com/brianlmerritt/knockout-babel-browserify-gulp
Это написано в ES2015, и отлично компилируется.
Проблема заключается в том, что я хочу иметь возможность загружать центральную модель представления, которая применяется к каждой странице, за исключением, конечно, компонента, который имеет свои собственные модели просмотра.
Я думал, что понял http://www.knockmeout.net/2012/05/quick-tip-skip-binding.html, но когда я окружаю компонент <!-- ko stopBinding : true -->
, компонент не связывается. Если я не окружаю компонент, то получаю конфликт.
Если кто-то может указать мне, как зарегистрировать компонент таким образом, чтобы модель центрального представления не конфликтула, я был бы очень благодарен!
Каждый пользовательский компонент зарегистрирован:
ko.components.register(
'component-one',
require('./components/component-one/component.js'));
Чтобы сохранить центральную модель представления просто, я просто пошел с:
var centralViewModel = function centralViewModel()
{ var bindingWorked = ko.observable(
'The binding worked. KO view model centralViewModel has a this context and was bound to the html correctly');
};
К сожалению, когда я привязок они конфликтуют:
ko.applyBindings(centralViewModel(),document.body);
ko.applyBindings(); // Pull in all of the components
Я уверен, что должен быть способ потянуть компоненты таким образом, чтобы это не противоречило ntral.
Почему не первый 'applyBindings' тянуть во всех компонентах? –
Это так, но конфликт привязок. Мне нужен способ сказать centralViewModel не переступать его знак и оставлять только компоненты – brianlmerritt
Hi @RoyJ - проблема не была конфликтом между центральными и компонентными режимами просмотра - это было с кодом в centralViewModel – brianlmerritt