Javascript 主干:如何将数据传递到渲染视图
是否有方法将数据传递到渲染 以下代码是我当前使用的代码:Javascript 主干:如何将数据传递到渲染视图,javascript,backbone.js,Javascript,Backbone.js,是否有方法将数据传递到渲染 以下代码是我当前使用的代码: render:function() { var background = var highlight = this.model.get('highlight'); $(this.el).find('div').each(function(index,element) { if(index < highlight) { $
render:function() {
var background =
var highlight = this.model.get('highlight');
$(this.el).find('div').each(function(index,element) {
if(index < highlight) {
$(element).css({'background': 'url("assets/img/alphabet/ok/ok.png"), url('+background+')'});
$(element).attr('id', 'ok');
} else {
$(element).removeAttr('id');
}
})
}
也许像这张照片:
。。。您可以这样做:
this.background : [],
//...
initialize : function(){
//...
this.background.push(string.charAt(i));
//...
},
render : function(){
//...
var background = this.background[index];
//...
}
但是,初始化中的for循环也可以留在render中,因为它使用.append渲染视图
编辑注:
我重复一遍,在渲染函数的初始化函数中循环移动的可能性
我尝试更改您的主干视图结构:
var WordView = Backbone.View.extend({
initialize : function(){
this.listenTo(this.model,"remove",this.remove);
},
render : function(){
var $Div,
string = this.model.get('string'), //use _string (string can cause some issue in IE)
highlight = this.model.get("highlight"),
letter_width = 36,
letter_heigth = 35,
word_width = string.length * letter_width;
if(this.model.get("x") + word_width > $(window).width()) this.model.set({x:$(window).width() - word_width});
$(this.el).css({
position:"absolute",
top : this.model.get("y"),
left : this.model.get("x")
});
var background,char;
for(var i; i < string.length; i++){
char = string.charAt(i);
background = "url('"+char+"') no-repeat";
$Div.removeAttr("id"); //seems useless
if(i < highlight){
background = "url('assets/img/alphabet/ok/ok.png'),url('"+char+"')";
$Div.id("ok"); //maybe is better $Div.class("ok");
}
$Div = $("<div>").clone();
$Div.css({
width : letter_width,
heigth : letter_height,
float: "left",
"background" : background
}).appendTo($(this.el));
}
}
});
但它总是使用最后一个字母的例子:apple a p l e但在render always e中如何变为等于初始化?控制台中的一些错误?样式放置正确吗?url“+char+”似乎只放置一个字符,而不是背景url。使用其他样式(如背景色,红色而非背景)查看错误的位置: