我查找了动态地为视图分配el
的正确方法,and found this.
根据这篇文章,我在创建视图时传递el
元素。
var MyView = Backbone.View.extend({
initialize: function(options) {
options = options || {};
this.$el = this.$el || $(".somediv ul");
}
});
然后我创建这样的视图:
// creating a view this way works fine.
this.myView= new MyView({
'el': this.$('.someotherdiv ul')
});
这种视图创建方式按预期工作。但是当我没有向其传递任何el
值时会出现问题。
//there is a problem though, If I create view like this:
this.myView= new MyView();
view.el
未设置为$(".somediv ul")
,而只是一个div标记。
有谁能告诉我动态分配el
并为其设置默认值的正确方法。
答案 0 :(得分:0)
默认情况下,骨干视图的el
设置为空div。因此,this.el
和this.$el
始终存在。
<击> 你可以试试这个:
initialize: function (options) {
options = options || {};
this.$el = options.el ? $(options.el) : $('.somediv ul');
}
但通常我不会这样做。您正在将您的观点与&#34; .somediv ul&#34;页面上的元素。 :/
击>
===============编辑==================
是的,这是一个更简单的解决方案。 (愚蠢的我)
在您看来:
YourView = Backbone.View.extend({
el: '.somediv ul',
initialize: function () {
}
});
this.el
将设置为.somediv ul
,除非您通过另一个。