我有一个关于动态加载视图元素上的el标签的问题。我将一个点击侦听器附加到一个<a>
标签上,该标签将动态加载视图元素(从模板渲染它,通过ajax填充某些内容等)。现在,如下我目前已经实现了它:backbone js - 动态加载视图:应该是启动器,还是应该由父视图启动?
MyDynamicView = Backbone.View.extend({
el: "a#dynamic-launcher",
events: {
"click": "launch"
},
initialize: function(){
_.bindAll(this, "render");
},
launch: function(e){
e.preventDefault();
this.render();
},
render: function(){
// do template/ajax/whatever.
}
});
其中一期工程还算不错,但是它是从做一些事情阻止我。例如,如果我想添加另一个事件,这是由我的新动态视图中的某个事件触发的,我无法这样做(因为事件仅显示在父项el
的下面)。
所以另一种方法可能是拥有一个父视图,该视图知道哪个元素启动动态元素,然后创建/呈现它。
velo.AppView = Backbone.View.extend({
el: "body",
events: {
"click a#dynamic-launcher": "launchDynamicView"
},
launchDynamicView: function(e){
e.preventDefault();
new MyDynamicView(); // Or something - Maybe I need to call render. Not sure.
}
});
这第二种技术更有意义吗?
任何指导将是伟大的!
谢谢。
这不是我要找的,但 - 这将启动视图可以从页面完全不同的部分链接观点最终呈现的是什么。该链接应该在呈现视图之前呈现。 – idbentley 2011-05-24 20:26:27
@idbentley啊。然后你需要附加某种'Controller'来连接链接/按钮,并在某个地方生成一个新的'View'对象。感觉像一个'View' - >'Controller' - >'View'关系,而不是'ParentView' - >'ChildView' – Raynos 2011-05-24 20:31:59