我想使用使用Emberjs返回的json数据通过css更改div的背景图像。但是,背景图像在以下代码中没有变化。
但是,当我删除返回并将模型后代码放入模型中时,它会更改背景图像,代码中的问题是什么以及如何解决?谢谢
App.ERoute = Ember.Route.extend({
model: function()
{
var json = $.getJSON('url').done(function(result){
return result;
});
return json;
},
afterModel : function(model)
{
$('#eventheader::shadow #headerBg').css('background-image' , 'url(' + model.image + ')';
}
});
答案 0 :(得分:0)
在路线的模型钩子中进行背景更改不是一种方式。在您的视图中执行此操作,即应执行演示/视图逻辑。
要使代码正常工作,您需要使用promises,例如:
model: function() {
return Ember.$.getJSON('url').then(function() {
// perform some logic
});
},
afterModel : function(model) {
// this hook executes once the promise returned by model resolves
$('#eventheader::shadow #headerBg').css...
}
在解除beforeModel
,model
和afterModel
之前,会阻止Ember过渡。在所有这些挂钩返回已解决的承诺或不是承诺的内容之前,您的转换将无法完成(视图将不会呈现)。
读:
http://emberjs.com/api/classes/Ember.Route.html#method_model
http://emberjs.com/guides/understanding-ember/managing-asynchrony/