[英]Backbone.js binding dynamic el generation
我在创建视图并动态创建“ el”元素并将其传递给正在创建的视图时遇到了一个小问题。
var divIdentification = ".data-identification-"+this.model.dataTypeId+"-"+this.model.dataGrouping.get("data1Id")+"-"+this.model.dataGrouping.get("data2Id");
以下工作
var roomOccupancyView = new Bookings.RoomOccupancyView({
model: datas,
el: "div"
});
但是以下内容没有
var divIdentification = ".data-identification-"+this.model.dataTypeId+"-"+this.model.dataGrouping.get("data1Id")+"-"+this.model.dataGrouping.get("data2Id");
var roomOccupancyView = new Bookings.RoomOccupancyView({
model: datas,
el: divIdentification
});
当我尝试在第一个方案中将el作为字符串传递的第一种情况在子视图中放置el的console.log时,得到以下对象
<div class="header-container">
但是,当我传递变量时,会得到“未定义”。
另外,我还尝试将变量输出包装为$(string),但是由于console.log仍然提供了不同的输出,因此也没有用。
没有人有任何想法将动态值传递给el属性值。 任何帮助是极大的赞赏。
此致MilindaD
正如评论所指出的那样,通过初始化函数传递的el
属性只能是String
或jQuery对象。 否则,Backbone将根据其tagName
, className
和id
属性创建一个el。
因此,在您的第一个场景中,您传递了el: "div"
,然后Backbone将视图的el
绑定到DOM中的第一个div
元素。
在第二种情况下,您通过了el: divIdentification
和Backbone会将视图的el设置为$(divIdentification),这在您的DOM中未定义。
为了让您动态设置el
。 3种方法
在初始化程序中为el
值分配一个有效的html字符串,选择器字符串或一个有效的jQuery DOM对象。
在初始化程序中将className
或id
属性分配给divIdentification,以允许Backbone视图创建自己的el
另一种方法是在这里使用setElement
您的问题是您在创建divIdentification
关键字this
时未指向您的视图,请尝试以下操作:
var roomOccupancyView = new Bookings.RoomOccupancyView({
model: datas,
el: function() {
return ".data-identification-" +
this.model.dataTypeId +
"-" + this.model.dataGrouping.get("data1Id") +
"-"+this.model.dataGrouping.get("data2Id");
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.