В моем приложении у меня есть раздел, называемый «уведомлениями» внутри вида, называемый 'home.html'
. Теперь мне нужно использовать этот раздел в другом представлении, поэтому я скопировал всю разметку уведомлений внутри «notifications.html», которую я использую с помощью композиции.Durandal составляет значение изменения переменной связанной модели просмотра
Проблема в том, что я не хочу копировать весь код, который я использую для уведомлений, для работы с 'home.js' в другую модель представления моего нового представления, которая будет использовать уведомления. Поэтому вместо того, чтобы иметь observableArray
уведомлений внутри вида viewmodel, я хочу иметь модуль только для 'notification.html', который содержит эти данные. Но я не знаю, как я могу изменить значение observableArray
внутри 'notification.js' из моих других режимов просмотра.
Вот что я сделал до сих пор:
notification.js
define(['knockout'], function(ko) {
var notifications = ko.observableArray([]),
setNotifications = function(data) {
notifications(data)
}
return {
notifications: notifications,
setNotifications: setNotifications
}
home.js
define(['knockout', 'notification'], function(ko, notification) {
var self = this
...
self.activate = function() {
http.get('...').then(function(data) {
notification.setNotification(data)
})
}
home.html
<div data-bind="compose: 'viewmodels/notifications'"></div>
То, что я знаю, что при использовании пути viewmodel в составлять привязку, разметка этой модели просмотра вводится и привязана к ее модулю отображения модуля.
Проблема: я хочу изменить значение массива «уведомлений» внутри 'notification.js'
из модели просмотра моего основного вида, 'home.js'
. Я знаю, что моя текущая предварительная работа не сработает, потому что я считаю, что экземпляр модели ввода notifications.js
, введенный в notifications.html
, не является тем же самым экземпляром, который мне нужен внутри home.js
. Итак, как я могу это достичь?
Would вам нравятся уведомления для работы в качестве сингла? Итак, одни и те же данные должны отображаться везде, где отображается вид уведомлений? –