我有一个表达
{{ product.SelectedProduct.BasePrice - product.SelectedProduct.Discount | currency }}
我需要能够按照baseprice的价格订购我的产品 - 折扣。有没有办法做到这一点?所以我想要像
这样的东西{{product.SelectedProduct.ProductName |
orderBy : product.SelectedProduct.BasePrice - product.SelectedProduct.Discount }}
新代码:
<div class="row-fluid">
<span class="mktpl_productnm" ng-show="product.SelectedProduct.ProductName">{{product.SelectedProduct.ProductName || 'product not available' | orderBy: price }}</span>
<span ng-hide="product.SelectedProduct.ProductName" class="field-validation-error">Product not available</span>
<span ng-show="product.SelectedProduct.remaining < product.SelectedProduct.prodterm.minQuantity" class="field-validation-error">
(Out of stock)
</span>
</div>
vm.price = function (product) {
debugger;
return product.SelectedProduct.BasePrice - product.SelectedProduct.Discount;
};
答案 0 :(得分:2)
首先,您的示例没有多大意义:orderBy适用于数组,以排序此数组的元素。但product.SelectedProduct.ProductName
可能不是数组。
第二:the documentation说:
表达式函数()stringArray。&lt;(function()| string)&gt; =
比较器用来确定元素顺序的谓词。
可以是以下之一:
功能:Getter功能。此函数的结果将使用&lt;,===,&gt;进行排序。运营商。 [...]
因此,您需要的只是范围中的一个函数,它返回要对数组的给定元素进行比较的元素:
$scope.reducedPrice = function(product) {
return product.SelectedProduct.BasePrice - product.SelectedProduct.Discount;
};
并在视图中:
{{ productArray | orderBy:reducedPrice }}
另一种选择是预先计算reducedPrice并将其存储为属性或产品,然后只需使用
{{ productArray | orderBy:'reducedPrice' }}