2015-11-07 51 views
1

我正在寻找使用ng-style动态设置div的背景图像。有几个答案,但没有为我工作。 我已经意识到,对于一个简单的情况下,如下图所示,没有任何问题ng-class在渲染后不设置图像背景

<li ng-style="{'background-image': 'url({{ image.source }})'}">...</li> 

其中$scope.image = ...定义。或者更直白:

<li ng-style="{'background-image': 'url(http://example.com/image.png)'}">...</li> 

但是假如你具备以下条件:

<li ng-style="{'background-image': 'url({{ item.image_url }})'}">...</li> 

和控制器:模板被渲染后

$scope.item = undefined; 
Items.get({id: 1}) 
    .then(function (item) { 
     $scope.item = item; 
    }); 

项目变为可用。而且我发现,角只是设置背景图片到主机URL

<li ng-style="{'background-image': 'url({{ item.image_url }})'}" style="background-image: url(http://localhost:3000/);"> 
</li> 

我可以使用自定义指令这一点,但如果有得到这个工作的一个简单的方法,我宁愿这在指示。

这里有一个plunker演示该问题:

http://plnkr.co/edit/5JsK4njQi7Kc3ShUtRIw?p=preview

回答

1
<div ng-if="item.image_url" class="img-div" ng-style="{'background-image': 'url({{item.image_url}})' }"></div> 

使用ng - 如果是这样,当item.image_url获得值后,您的元素被渲染。

Plunker example

3
ng-style="{'background-image': 'url({{item.image_url}})' }" 

Plunker