【发布时间】:2015-04-15 09:53:31
【问题描述】:
我正在尝试将解决方案从 1.2.1 更新到 1.3.15,但我被卡住了,似乎摘要循环通过循环运行的方式发生了变化。
我有一个工厂,它保存所有我的控制器的数据,它有一个对象列表和一个当前对象属性。它用于货币转换。
然后我得到了一个可以放在数字值上的过滤器。它引用工厂并使用当前属性来获取转换率并修改输出。
值 = 1000;当前=千货币= 1000 => {价值| bvcurrency} 输出:1;
有一个功能可以更改当前货币,过滤器应该更新输出。这在 1.2.1 中运行良好,但在 1.3.x 中不行
我有一些例子:
不工作 1.3.15:http://jsfiddle.net/dabii/mqkj4td9/7/
工作:1.2.1:http://jsfiddle.net/dabii/mqkj4td9/8/
app.factory("numberSvc", [function () {
return {
Formats: [{
Display: "LC",
Multiply: 1
}, {
Display: "kLC",
Multiply: 1000
}, {
Display: "MLC",
Multiply: 1000000
}],
Current: {
Display: "kLC",
Multiply: 1000
},
AddCurrency:function(curr){
this.Formats.push(curr);
},
SetCurrent: function(format){
this.Current = format;
}
};
}]);
app.filter('bvcurrency', ['$filter', 'numberSvc', function ($filter, numberSvc) {
return function (input) {
var multi = numberSvc.Current.Multiply,
ret = ( !! input || input === 0) && angular.isNumber(parseFloat(input)) ? $filter('number')(input / multi, 0) : "";
return ret;
};
}]);
通过按下按钮,您可以看到出厂值发生了变化,但使用过滤器的那个既不是 aut 也不是重复内部的值。如果我通过更改值来强制摘要,则重复外部的值将更改,但内部不会更改。
似乎有某种“智能”摘要正在运行,并且看到重复中的值没有改变,因此不会为它们运行摘要。但它没有看到输出会改变,因为它没有考虑过滤器。
有人可以指出正确的方向以使其在 1.3.1 中运行吗?还是告诉我错误?
亲切的问候
拉斐尔
【问题讨论】:
标签: angularjs angularjs-ng-repeat angularjs-filter angularjs-factory