[英]Passing an event to a collection in backbone
我試圖通過觸發應用程序中其他位置的事件來觸發集合上的行為。 我對骨干網還很陌生,所以可能我的語法都錯了,但這似乎應該可行
var Test = Backbone.Model.extend({
});
var Tests = Backbone.Collection.extend({
model: Test,
events: {
"testEvent":"testResponce"
},
testResponce: function(){
alert('hello world');
}
});
var myTest = new Test();
myTest.trigger('testEvent');
能做到嗎? 我要去哪里錯了?
您觸發的事件必須在模型中捕獲。
如果要捕獲集合中的事件,可以使用Backbone.on和Backbone.trigger或collection.on和collection.trigger
請檢查以下小提琴作為示例
var Test = Backbone.Model.extend({});
var Tests = Backbone.Collection.extend({
model: Test,
initialize: function () {
Backbone.on('testEvent', function () {
alert('event handled in collection');
});
}
});
var myCollection = new Tests();
var myTest = new Test();
Backbone.trigger('testEvent');
UPDATE
集合具有一個初始化方法 ,可用於注冊事件。 稍后,您可以從其實例觸發這些事件。
NULL建議的另一種方法是像下面這樣。
var Test = Backbone.Model.extend({});
var Tests = Backbone.Collection.extend({
model: Test,
initialize: function () {
this.on('testEvent', function () {
alert('event handled in collection');
});
}
});
var myCollection = new Tests();
var myTest = new Test();
myCollection.trigger('testEvent');
如果要使用testEvent
事件調用集合的特定方法,則也可以采用此路徑。 工作演示
var Test = Backbone.Model.extend({
initialize: function() {
this.on('testEvent', function() {
console.log(this.collection);
this.collection.testResponce();
});
}
});
var Tests = Backbone.Collection.extend({
model: Test,
testResponce: function(){
alert('hello world');
}
});
var myTest = new Test();
var testList = new Tests([myTest]);
myTest.trigger('testEvent');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.