0

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

如果还有其他方法可以做到这一点,也请告诉我!

选项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

在创建主干视图之前扩展一个普通的 ol' 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);

});
4

1 回答 1

1

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

于 2013-09-30T09:23:25.380 回答