使用javascript更改DIV背景

时间:2014-11-24 18:00:05

标签: javascript jquery html ember.js

我想使用使用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 + ')';
    }
});

1 个答案:

答案 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...
}

在解除beforeModelmodelafterModel之前,会阻止Ember过渡。在所有这些挂钩返回已解决的承诺或不是承诺的内容之前,您的转换将无法完成(视图将不会呈现)。

读:

http://emberjs.com/api/classes/Ember.Route.html#method_model

http://emberjs.com/guides/understanding-ember/managing-asynchrony/