2013-10-10 56 views
1

我想在我的控制器中绑定范围对象上运行基本的数学函数。该视图是一系列滑块,需要基于几个不同滑块的用户输入做出反应。我似乎无法获得在前端进行实时更新的值。Angularjs数学绑定范围对象

这是我对这些值的'计算'。

$scope.mainSlide = { 
    assets: ($scope.slide1.assets * $scope.slide2.assets/.1), 
    roa: ($scope.slide1.roa * $scope.slide2.roa/.1) 
}; 

我有点困惑,为什么计算值没有绑定在前端。

任何帮助,或方向将不胜感激!

+0

你究竟想达到什么目的? – Phill

+0

@Phill试图让mainSlide更新视图,因为slide1.assets中的值会发生变化。它应该计算值,并输出到不同的范围滑块,有点像活动图。 – flashpunk

回答

4

对于$scope上的计算属性,可以使用$scope.$watch在值更改并设置新值时重新计算(例如,观察slide1和slide2,在主线更改时设置主线滑动的设置值)。您还可以设置mainSlide的计算值是功能,它们将被自动更新:

你的情况:

$scope.mainSlide = { 
    assets: function() { return ($scope.slide1.assets * $scope.slide2.assets/.1);}, 
    roa: function() { return ($scope.slide1.roa * $scope.slide2.roa/.1);} 
}; 

要在您的视图中使用它们:

Assets: {{mainSlide.assets()}} 
Roa: {{mainSlide.roa()}} 

例Plunker的功能方法:http://plnkr.co/edit/tFiZ5z?p=preview

用于$ watch方法的示例性调节器:http://plnkr.co/edit/5iASgJ?p=preview

+0

这很好。然而(我没有包括的东西),我如何将它应用到我的视图上的ng-model属性? – flashpunk

+0

在这种情况下,我只是使用$ watch方法。更新答案以添加示例Plunker。 –

+0

非常感谢,像魅力一样工作。我想我需要更多地了解$ watch方法。 – flashpunk