我在Backbone中有一个渲染方法基本上是这样的:
render: function () {
$.tmpl(this.template, attrs).appendTo(this.el);
return this;
},
Run Code Online (Sandbox Code Playgroud)
从路由器动作调用:
action: function () {
$('#container').empty();
$('#container').append(myView.render().el);
},
Run Code Online (Sandbox Code Playgroud)
现在,我想label在此视图中的元素上应用插件.我的第一个想法就是调用插件render:
render: function () {
$.tmpl(this.template, attrs).appendTo(this.el);
this.$('label').inFieldLabels();
return this;
},
Run Code Online (Sandbox Code Playgroud)
但这不起作用(我假设这是因为该元素尚未添加到DOM中).如果我在路由器操作中调用插件,它确实有效:
action: function () {
$('#container').empty();
$('#container').append(myView.render().el);
myView.$('label').inFieldLabels();
},
Run Code Online (Sandbox Code Playgroud)
我宁愿不这样做,因为插件是视图的一部分,而不是路由器,所以在动作中调用它是没有意义的.有一个更好的方法吗?