如何从工厂传递的函数返回值?

时间:2016-04-24 14:44:16

标签: javascript angularjs

目前在视图中totalCost作为函数传递给round,但它必须是整数值。

查看

{{round(shoppingCart.totalCost)}}

工厂

myApp.factory( ....
var calculateTotalCost = function(){
    return this.items.map(function(item){
      return HelperFunctions.getPrice(item) * item.quantity;
    }).reduce(function(p, c){
      return p + c;
    });
  };
var factory = {
 shoppingCart: {order: currentOrder, totalCost: calculateTotalCost}
}
return factory;
}

如何解决?

round : function (value) {
        return typeof value !== 'undefined'? value.toFixed(2): 0;
      }

2 个答案:

答案 0 :(得分:1)

目前,您拥有totalCost变量,该变量在calculateTotalCost对象中包含shoppingCart函数的引用。因此,在视图中显示相同的变量时,您需要通过$scope.shoppingCart = shoppingCart

在视图上提供服务引用

您可以在您的情况下使用精度为number的{​​{1}}过滤器本身,因为您希望将值固定为精度2。这也可以帮助您以货币格式显示数字。

2

答案 1 :(得分:0)

您应该避免直接在视图表达式中从工厂调用函数。

在指令的控制器中:

  1. 注入工厂。
  2. 调用函数getTotalCost(隐藏calculateTotalCost
  3. 将结果存储在变量中。
  4. 直接在控制器中应用圆形功能也是一个不错的主意。
  5. 最后将变量绑定到视图。