假设我有一个叫做的对象,
scope.rec = {a: 2, b: 3, name: a,b};
我将"name"键拆分为 scope.x = scope.rec.name.split(",");
,然后scope.x将成为一个数组 .
现在我需要在视图中迭代"scope.x"并获取与 scope.rec
上的匹配属性名称相关联的值 . 我只想迭代有效的属性名称,所以我需要在 scope.x
上使用过滤器,但它没有像我期望的那样工作 .
一旦我得到第一部分工作,我还需要添加功能来将 scope.rec
属性的值相乘 - 在上面的例子中,它只有2个数字(a,b),但它可能超过2 .
以下是我尝试过的代码 .
scope.x =
scope.rec.name.split(",");
scope.myFilter = function(y) {
if(!scope.rec.hasOwnProperty(y)) return false;
scope.ys = Number(scope.rec[y]);
return scope.ys;
};
HTML:
<div ng-repeat="y in x | filter:myFilter">
<label for="{{y}}">{{y}}</label>
<input type="number" id="{{y}}" value={{ys}}>
</div>
<div><input id="calc" type="number" ng-model="calc()" disabled></div>
现在输入中的 ys
对于两个输入都是相同的,并且 calc()
函数不能正确计算值 .
提前感谢您的帮助 .
2 回答
你的过滤器(至少你在视图中如何使用它)将收到一个包含所有元素的数组,而不仅仅是一个 . 所以你需要返回一个完整的数组
并返回过滤后的数据 .
根据您的观点,您需要使用角度滤镜 .
对于你输入你应该使用它
虽然我会删除id - ID需要是唯一的,并且可能有重复的值 .
对于
calc()
函数,您可以使用reduce来乘以它们并获得对
$scope.filteredItems
的引用,在您的视图中使用它你可以这样做: