Извините, но dojo/topic
реализации, как правило, не предоставляют список topics
, которые были published
/subscribed
до, и ни кто published
/subscribed
к тому, что тема. Выполнение Dojo соответствует этому стандарту, что нет встроенного механизма для получения списка тем. Обратите внимание, что dojo/topic
имеет только 2 функции, publish
и subscribe
.
Вы должны реализовать свою идею, что-то вроде mixin
с функцией, чтобы подписаться на topic
и постоянно отслеживать имена тему зарегистрированных, это просто идея
В _TopicMixin.js
define(["dojo/topic"], function(topic){
return {
topicsIndex: {},
mySubscribe: function(topicName, listener){
this.topicsIndex[topicName] = topic.subscribe(topicName, listener);
}
myUnsubscribe: function(topicName){
if(this.topicsIndex[topicName]){
this.topicsIndex[topicName].remove();
delete this.topicsIndex[topicName];
}
}
amISubscribed: function(topicName){
return this.topicsIndex[topicName];
}
};
});
Как вы можете использовать его
define(["dojo/_base/declare","myApp/_TopicMixin"], function(declare, _TopicMixin){
return declare([_TopicMixin], {
someMethod : function(){
if (!this.amISubscribed("some-evt")) {
this.mySubscribe("some-evt", lang.hitch(this, "_someOtherMethod"));
} else {
this.myUnsubscribe();
}
}
});
});
Надеется, что это помогает