ng-class在渲染后不设置图像背景

时间:2015-11-07 10:02:56

标签: css angularjs

我正在寻找使用ng-style动态设置div的背景图像。有几个答案,但没有一个适合我。 我已经意识到,对于如下所示的简单案例,没有问题

<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;
    });

项目在呈现模板后变为可用。我发现angular只是将背景图像设置为主机URL

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

我可以使用自定义指令,但是如果有一种简单的方法可以使它工作,我更喜欢这个指令。

这是一个证明这个问题的傻瓜:

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

3 个答案:

答案 0 :(得分:3)

ng-style已绑定范围变量,因此您不需要添加花括号,但可以简单地连接正确的字符串值:

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

http://plnkr.co/edit/b9htGOTY6LBeHQMQNYXV?p=preview

答案 1 :(得分:3)

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

https://blockexplorer.com/tx/8987fa849d822dbb0e593d9d1b750550efe510b02885239b3d7f318cfd219a07

答案 2 :(得分:1)

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

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

Plunker example