在AngularJS中向对象添加方法?

时间:2015-02-12 15:00:03

标签: angularjs angularjs-ng-repeat

我有一个AngularJS网络应用,我在一组人身上使用ng-repeat。 json数组定义了人员的名字,姓氏和年龄。

在我的表格中,我尝试使用ng-class指令将CSS类应用于所有年轻人。

<table class="table table-striped table-hover">
    <tr><th>Firstname</th><th>Lastname</th><th>Age</th></tr>
    <tr ng-repeat="person in people | filter:search" ng-class="{success: person.isYoung()}">
        <td>{{person.firstname}}</td>
        <td>{{person.lastname}}</td>
        <td>{{person.age}}</td>
    </tr>
</table> 

请注意我试图调用person.isYoung(),这是我遇到问题的方法。如果我使用

,事情就有效
ng-class="{success: person.age < 30}"

但是,我想把这个逻辑转移到Controller中。

在我的控制器中,我已经添加了这个;

$scope.isYoung = function (person) {
    return person.age < 30;    
}

但似乎没有被召唤。

app.js中的方法定义对我来说应该是什么样的?

ng-class="{success: person.isYoung()}"

1 个答案:

答案 0 :(得分:2)

该功能的签名是

isYoung(person)

这就是您需要在模板中使用的内容:

ng-class="{success: isYoung(person)}"

如果您希望能够使用person.isYoung(),则需要将此功能添加到阵列中的所有人员:

angular.forEach(persons, function(person) {
    person.isYoung = function() {
        return person.age < 30;
    }
});