【发布时间】:2014-06-09 18:56:49
【问题描述】:
我有一份产品清单。每个产品都有三个属性:mustBuy、promotion(都是布尔值)和productName。我要做的是根据用户输入一次应用一个过滤器。如果用户单击一个名为“必须购买”的按钮,产品将被 mustBuy 字段过滤,因此一旦我单击该按钮,我应该只会看到 mustBuy 属性值为 true 的产品。 我想以动态方式生成这些过滤器按钮,因为稍后我可能会添加额外的属性。现在我有一个用于过滤的硬编码按钮列表:
<a ng-click="myFilter = {mustBuy:true}">
<img src="/images/must-filter.png" />
</a>
<a ng-click="myFilter = {promotion:true}">
<img src="/images/promo-filter.png" />
</a>
这是“myFilter”过滤的内容。
<div ng-repeat="product in products | filter:myFilter">...</div>
它工作正常,但我想让这些过滤器动态化,因为我会在未来添加更多。这是我尝试过的: (v1): Js控制器:
$scope.filters = [{ image: "must-filter.png", myFilter: { mustBuy: true } }, { image: "promo-filter.png", myFilter: { promotion: true } }];
HTML:
<a ng-repeat="f in filters | filter:f.myFilter">
<img src="/images/{{f.image}}" />
</a>
(v2): Js控制器:
$scope.filters = [{ image: "must-filter.png", myFilter: { mustBuy:true } }, { image: "promo-filter.png", myFilter: {promotion:true} }];
HTML:
<a ng-repeat="f in filters"
ng-click="{{f.myFilter}}">
<img src="/images/{{f.image}}" />
</a>
(v3):
Js 控制器:
$scope.filters = [{ image: "must-filter.png", myFilter: "myFilter = {mustBuy:true}" }, { image: "promo-filter.png", myFilter: "myFilter = {promotion:true}" }];
HTML:
<a ng-repeat="f in filters"
ng-click="{{f.myFilter}}">
<img src="/images/{{f.image}}" />
</a>
第三种方法 (v3) 具有与原始(硬编码)方法完全相同的 HTML 输出,只是它不起作用,这让我认为幕后发生了更多(绑定)事情?如何实现第一段中描述的功能?
【问题讨论】:
-
是的,有……现在,问题来了?
-
我改写了这个问题以使其更清楚。谢谢。
标签: javascript angularjs angularjs-ng-repeat angularjs-filter