目前我只是直接在定义下面实例化视图,但我想知道是否有更好的方法可以做到这一点?
var BVApp = Backbone.View.extend({
Name: 'BVApp',
// do chonka stuff
});
$A.Class.add(new BVApp());
答案 0 :(得分:0)
本身没有办法创建“自我实例化视图”(因为你必须以某种方式将它实例化到某个地方!),但是可能有办法实现你想要的。根据您的具体目标,我看到两种方法可以明确地实例化您的对象:
创建一个实例化并添加视图的方法:
$A.Class.addInstantiated = function (ObjectConstructor) {
this.add(new ObjectConstructor());
};
如果您想要的是单身,并且您正在使用像RequireJS这样的模块加载器,那么您实际上只能返回一个实例化对象:
define([], function () {
function Foo(a) {
// ...does stuff...
}
return new Foo();
});
这样,您的模块的每次使用都将是相同的,实例化的对象。这种方法的一个缺点是它不是特别可测试的,但你可以通过在一个模块中放置未实例化的模型然后在第二个模块中将其实例化为单例来解决这个问题。 E.g:
define([], function () {
function Foo(a) {
// ...does stuff...
}
return Foo;
});
define(['foo'], function (Foo) {
return new Foo();
});