何处为所有木偶视图提供方法

时间:2014-08-12 00:33:37

标签: javascript backbone.js marionette

所以我有一个方法可以在我的所有ItemViewCollectionView中提供。

我在搜索后找到的是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)

行为可能不会像这样工作,在这种情况下,我需要一种不同的方法来使方法可用于我的所有视图。

1 个答案:

答案 0 :(得分:0)

我最后只是扩展了Marionette.View,以便为我提供所需的方法可见性。

define([
    'backbone',
    'marionette',
    'underscore',
    'jquery'
], function(Backbone, Marionette, _, $) {
    _.extend(Marionette.View.prototype, {
        addElement: function() {...},

        removeElement: function() {...}
    }
});
相关问题