gpt4 book ai didi

javascript - backbone js - 动态加载 View : should el be the launcher, 还是应该由父 View 启动?

转载 作者:行者123 更新时间:2023-11-30 18:43:35 25 4
gpt4 key购买 nike

我对动态加载 View 元素上的 el 标签有疑问。我将点击监听器附加到 <a>标签,它将动态加载 View 元素(从模板呈现它,通过 ajax 填充一些内容等)。现在我目前实现如下:

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.
}
});

效果相当好,但它确实妨碍了我做一些事情。例如,如果我想添加另一个事件,它是由我的新动态 View 中的某些东西触发的,我不能这样做(因为事件只在父级 el 下方显示)。

因此,替代方案可能是拥有一个父 View ,它知道什么元素启动动态元素,然后创建/呈现它。

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.
}
});

第二种技术是否更有意义?

任何指导都会很棒!

谢谢。

最佳答案

最简单的解决方案是拥有

MyDynamicView = Backbone.View.extend({
el: "div",
events: {
"click a#dynamic launcher": "launch"
},
initialize: function(){
_.bindAll(this, "render");
el.append($("<a></a>", {
id: "#dynamic-launcher"
}));
},
launch: function(e){
e.preventDefault();
this.render();
},
render: function(){
// render link again?
// do template/ajax/whatever.
}
});

您的 View 应该包含链接,而不是链接。

关于javascript - backbone js - 动态加载 View : should el be the launcher, 还是应该由父 View 启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6114956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com