angularjs模块。 products
数组包含2个产品对象,这些对象将作为控制器的属性添加。
(function () {
var app = angular.module('myApp', []);
var products = [
{
title: "Dummy Title 1",
description: "Dummy Description 1",
image: "dummy_image_1.jpg"
},
{
title: "Dummy Title 2",
description: "Dummy Description 2",
image: "dummy_image_2.jpg"
}
];
app.controller('myController', function () {
this.products = products;
});
})();
JSF页面,如果我用images/{{product.image}}
等实际图像文件名删除images/dummy_image_1.jpg
,则会显示图像,但如果我使用angularjs表达式,则不会显示任何内容。请注意,循环中的其他表达式除{{product.image}}
外还有效。如果我在其他地方添加{{product.image}}
,那么它会正确显示文件名,但在ng-srs
中使用,如果我查看html,则不会输出任何内容。我不知道为什么会这样。
<h:form>
<div class="container" ng-controller="myController as controller">
<div class="row">
<div class="col-sm-offset-10">
Hello <b><h:outputText value="#{user.userName}"/></b><br/>
<h:commandLink action="cart" value="Cart"/>
</div>
</div>
<hr/>
<div ng-repeat="product in controller.products">
<div class="row">
<div class="media">
<div class="media-left">
<img class="media-object" ng-src="images/{{product.image}}"/> <!--If I replace that expression with a the image file name, it shows the image -->
</div>
<div class="media-body">
<h4 class="media-heading">{{product.title}}</h4>
<span class="caption">{{product.description}}</span><br/>
<h:commandLink action="cart" value="Add to cart"/>
</div>
</div>
</div>
</div>
</div>
</h:form>
答案 0 :(得分:1)
有时使用插值{{}}
不会评估&amp;更新属性值(最常见的是在IE中发生)。执行此操作的方法是使用带有插值ng-src
的{{1}}指令,这会在评估插值指令后将{{}}
添加到src
标记。
<强>标记强>
img
<强>替代强>
另一种方法是使用<div class="media-left">
<img class="media-object" ng-src="{{'images/'+product.image}}"/>
<!--If I replace that expression with a the image file name, it shows the image -->
</div>
指令,将ng-attr
与评估attribute
相加。这将确保您每次将插值分配给value
中提到的attribute
时(ng-attr之后的部分被视为要添加的属性,假设我们有ng-attr
然后angular将评估ng-attr-value="{{someVar}}"
,然后将该值赋给该元素的value属性。
<强>标记强>
someVar