knockout.js - data - Durandal/Knockout. Actualizar otra vista/modelo de vista
knockout js data bind text (1)
Suponiendo que tiene varias vistas secundarias y no desea introducir dependencias entre el shell y los niños, probablemente sea mejor usar el sistema de eventos de Durandal para esto. La vista de shell se convertiría en el editor y el niño vería a los suscriptores.
Consulte http://dfiddle.github.io/dFiddle-1.2/#/event-aggregator/dFiddle para obtener una demostración funcional.
publisher.js
define([''durandal/app''], function (app) {
var message = ko.observable();
var canPublish = ko.computed(function () {
return message() ? true : false;
});
return {
message: message,
canPublish:canPublish,
publish: function () {
app.trigger(''sample:event'', message());
}
};
});
suscriptor.js
define([''durandal/app''], function (app) {
return {
received: ko.observableArray([]),
subscription:ko.observable(),
subscribe: function () {
var sub = app.on(''sample:event'').then(function(message) {
this.received.push(message);
}, this);
this.subscription(sub);
},
unsubscribe: function () {
this.subscription().off();
this.subscription(null);
}
};
});
Otras opciones que podrían considerarse
- un módulo compartido que devuelve un singleton con propiedades que deben compartirse entre padres / hijos. Drawback tiene que definirse como dependencia en todos los padres / hijos.
- uno global, por ejemplo, myApp con propiedades ... Drawback: exponiendo un global
Durandal tiene una vista base llamada shell.
Agregué un cuadro de búsqueda en él para permitir que los usuarios de seguridad / control de calidad imiten a cualquier usuario del sistema. En el botón, haga clic en Deseo poder actualizar la vista de la vista que se muestra actualmente.
- Vista de carcasa (azul) (roja)
¿Cómo iría, exponiendo una función en mi vista hija para poder llamarla desde el shell, o engancharme en el evento click button del shell desde la vista secundaria?
Pregunta:
¿Expone Durandal cualquier gancho que pueda utilizar para hacer burbujas o pasar eventos a diferentes vistas o contenedores principales?