Jquery 主干网中的动态UI元素创建
我在主干中动态生成this.ui元素:Jquery 主干网中的动态UI元素创建,jquery,html,backbone.js,Jquery,Html,Backbone.js,我在主干中动态生成this.ui元素: var View = Backbone.View.extend({ el : '[data-container]', ui : { //Needs to be dynamically generated }, 到目前为止,我是这样做的: this.ui.protocolSetter = new $.fn.init("#protocol-" + id); 那很好用。现在的问题是,除了使用自定义属性外,如何执行相同的操作 如果我有这个带有数据属性的HTML
var View = Backbone.View.extend({
el : '[data-container]',
ui : {
//Needs to be dynamically generated
},
到目前为止,我是这样做的:
this.ui.protocolSetter = new $.fn.init("#protocol-" + id);
那很好用。现在的问题是,除了使用自定义属性外,如何执行相同的操作
如果我有这个带有数据属性的HTML5:
按钮数据something=“1”type=“button”
我想动态绑定元素,但要使用自定义属性
到目前为止,我已经尝试了许多组合,包括:
this.ui.protocolSetter = new $.fn.init.(e.currentTarget.dataset.something);
及
但到目前为止,一切似乎都不起作用。我做错了什么
以下是更清楚地说明问题的小提琴:
jsfiddle.net/vA2N4也许您正在寻找类似的东西:
newBinder: function(e) {
var id = e.currentTarget.id.replace(/^btn-/, '');
this.ui.protector = this.$('[data-something=' + id + ']');
}
注意,我切换到replace
从id
中提取数字,这可能比parseInt
更可靠。我还切换到将选择器本地化到视图的el
,这样可以避免在尝试查找尚未添加到DOM的内容时出现问题
我还建议您在构造函数内部创建ui
,而不是作为视图“类”的一部分。这:
将为视图的每个实例提供其自己的ui
,而:
var View = Backbone.View.extend({
ui : { },
//...
将ui
附加到视图的原型,因此视图的所有实例都将共享一个ui
。这对你来说可能不是问题,但坏习惯就是坏习惯
演示:你能发布一些代码来进一步说明这个问题吗?在使用ui对象时,是否存在ui对象没有相应jquery对象的问题?我的想法是,jquery可能在解析视图时执行,而不是在呈现视图时执行。。。因此#protocol元素不会呈现为yetHello Matty。DOM已呈现并准备就绪。我成功地使用HTML元素的ID将其绑定到UI对象。话虽如此,我确信多姆已经准备好了。例如,同一个元素有一个ID和一些数据(html5自定义)。我可以使用ID绑定它,但问题是我不知道如何使用自定义属性绑定它。由于某些原因,我在第一个问题中插入的HTML没有显示出来,所以让我尝试重新创建它,希望它能为我面临的问题提供更清晰的解释。也许在jsfiddle.net或jsbin.com上进行一点演示会有所帮助。现在我们看不到足够多的事情会有多大的帮助。这是小提琴手,它不是功能演示,但它更清楚地显示了我的问题。你想这样做吗?
initialize: function() {
this.ui = { };
}
var View = Backbone.View.extend({
ui : { },
//...