자식보기가 여러 개이고 쉘과 하위 항목 간의 종속성을 원하지 않는다고 가정 할 때 Durandal의 이벤트 시스템을 사용하는 것이 가장 좋습니다. 셸보기가 게시자가되고 자식 뷰 구독자가됩니다.
데모를 보려면 http://dfiddle.github.io/dFiddle-1.2/#/event-aggregator/dFiddle을 확인하십시오.
이 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());
}
};
});
subscriber.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);
}
};
});
간주 될 수
다른 옵션
- 특성을 가진 싱글을 반환하는 공유 모듈이 해야한다 부모/자식간에 공유됩니다. 단점은 모든 부모/자식에 종속성으로 정의되어야합니다.
- 속성이있는 myApp ... 단점 : 글로벌 노출
이것은 멋진 솔루션입니다. :) 다시 도움을 주셔서 감사합니다 Rainer. –