所以我有一个方法可以在我的所有ItemView
和CollectionView
中提供。
我在搜索后找到的是behaviors,但他们并没有表现出我的期望。
我希望能够定义一个可以从任何视图调用并传递参数的方法。在这种情况下,我的实现会在页面上放置一个图像,发送一个日志语句,并在一段时间后将其从页面中删除。
行为似乎只能让我能够将方法绑定到事件,而不是从附加到我视图的现有方法中调用它。
现在我有
return Marionette.Behavior.extend({
events: {
"click .myButton": "addImage"
},
addImage: function(e) {
e.preventDefault();
// code to add the image
}
});
然后在视图中,我将行为注入AddImage
并使用requirejs
behaviors: {
AddImage: {
behaviorClass: AddImage
}
}
如果我使用click事件,这很有效,但我仍然缺乏从现有视图方法触发它的方法。也许有:this.addImage(options)
。
行为可能不会像这样工作,在这种情况下,我需要一种不同的方法来使方法可用于我的所有视图。
答案 0 :(得分:0)
我最后只是扩展了Marionette.View,以便为我提供所需的方法可见性。
define([
'backbone',
'marionette',
'underscore',
'jquery'
], function(Backbone, Marionette, _, $) {
_.extend(Marionette.View.prototype, {
addElement: function() {...},
removeElement: function() {...}
}
});