Angular.js——在作用域中使用函数的优雅方式
Angular.js - elegant way to use functions in scope
我计划在整个应用程序中运行各种计算以显示不同的消息/类,我不确定在Angular中最优雅/最佳实践的方法是什么。
下面是我试图实现的一个简单示例,尽管我的计划是创建更复杂的表达式,这些表达式对我来说在标记中没有意义。
<li ng-repeat="goal in goals">
<strong ng-show="((goal.count / goal.goalNumber) * 100) == 0"> Get to work</strong>
<strong ng-show="((goal.count / goal.goalNumber) * 100) == 50"> Half way there!</strong>
<strong ng-show="((goal.count / goal.goalNumber) * 100) == 100"> Success!!</strong>
</li>
有人能推荐一个更模块化/可重用的方法来做到这一点吗?我想有一种方法是创建一个可以在整个模板中使用的函数。但是我如何得到每个"目标"迭代的目标呢?计数并进球。函数中的goalNumber ?这是我从控制器调用的东西,还是一个指令是存储它的更好的地方?
多谢。
稍微改进一下…
HTML<li ng-repeat="goal in goals">
<strong ng-show="geq(goal, 0)"> Get to work</strong>
<strong ng-show="geq(goal, 50)"> Half way there!</strong>
<strong ng-show="geq(goal, 100)"> Success!!</strong>
</li>
JS
$scope.geq = function(g, n){
return ((100 * g.count / g.goalNumber ) === n);
};
Markup
<li ng-repeat="goal in goals">
<strong ng-show="zeroGoals($index)"> Get to work</strong>
<strong ng-show="fiftyGoals($index)"> Half way there!</strong>
<strong ng-show="oneHundredGoals($index)"> Success!!</strong>
</li>
Js
$scope.zeroGoals = function(index){
return (($scope.goals[index].count / $scope.goals[index].goalNumber) * 100) == 0;
};
$scope.fiftyGoals = function(index){
return (($scope.goals[index].count / $scope.goals[index].goalNumber) * 100) == 50;
};
$scope.oneHundredGoals = function(index){
return (($scope.goals[index].count / $scope.goals[index].goalNumber) * 100) == 100;
};
为ng-repeat
所在的元素添加控制器。该控制器将有权访问循环变量。例子:
<div ng-app="app" ng-controller="Controller">
<div ng-repeat="item in items" ng-controller="RepeatController">
{{item}}: {{doubleItem()}}
</div>
</div>
控制器angular.module('app', [])
.controller('Controller', function ($scope) {
$scope.items = [1, 2, 3, 4];
})
.controller('RepeatController', function ($scope) {
$scope.doubleItem = function () {
return $scope.item * 2;
};
})
在视图中使用如下过滤器:
<strong ng-if="'goal.count ¦ isGoal : goal.goalNumber : 50">
和过滤器:
app.filters('isGoal', function() {
return function(count, goalNumber, reached) {
return (count / goalNumber) == reached;
}
});
相关文章:
- 在phonegap中为android调用onload函数的最佳方式
- 以不同的方式调用javascript函数
- 我想以异步方式执行常规函数
- 有没有一种优雅的方式来告诉esint,以确保我们're没有使用任何ES6语法/函数
- 我想要相同的函数以两种方式反应
- 如果变量不是't已传递给函数.这是正确的方式吗
- 以编程方式调用javascript函数
- 为什么模块化幂函数在 Python 和 Javascript 中对于大数字的工作方式不同
- Javascript - 以编程方式执行所有函数输入的方法
- 以 func(a)(b)(c) 的方式调用的 Javascript 函数
- 如何获取以编程方式定义nodejs函数的位置
- 在Javascript构造函数中定义属性的正确方式
- Angular:将对象存储在服务中以在视图中显示和将crud函数存储到服务器的最佳方式是什么
- 另一种方式是Javascript中的函数堆叠
- 如何制作一个JavaScript函数,处理多组输入,以同样的方式进行数学处理
- 以两种不同的方式使用函数
- JavaScript 对象,使用两种不同的调用函数方式查看预期结果
- 调用JavaScript函数方式的性能问题
- 在JavaScript中以函数方式提取属性和值
- 以函数方式修改对象的属性