在主干视图中使用mixins - 哪些是更好的方法?

时间:2013-09-30 00:17:56

标签: javascript backbone.js backbone-views mixins

这两个选项都会导致视图的正确行为。这个问题更多的是关于哪种方法更有效,或者出于其他原因需要。

如果还有其他方法可以解决这个问题,请告诉我们!

选项#1

在骨干视图的初始化函数内扩展。

define([

    'mixins/fooMixin',

    'mixins/barMixin'

],

function(FooMixin, BarMixin) {

    var FooBarView = BackboneLayout.extend({

        initialize: function() {

            _.extend(this, FooMixin);

            _.extend(this, BarMixin);

            /* do other things */

        },

        mySpecialMethod: function() {

            this.foo();

            this.bar();

        }

    });

    return FooBarView;

});

选项#2

在创建骨干视图之前扩展普通的'javascript对象。

define([

    'mixins/fooMixin',

    'mixins/barMixin'

],

function(FooMixin, BarMixin) {

    var FooBarViewDefn = {};

    _.extend(FooBarViewDefn, FooMixin, BarMixin, {

        initialize: function() {

            /* do other things */

        },

        mySpecialMethod: function() {

            this.foo();

            this.bar();

        }

    });

    return BackboneLayout.extend(FooBarViewDefn);

});

1 个答案:

答案 0 :(得分:1)

nr 2,毫无疑问,因为它只运行一次,每次实例化视图时都会执行#1。