向 AngularJS 中的对象添加方法?

Adding a method to an object in AngularJS?

我有一个 AngularJS 网络应用程序,我在其中对一组人使用 ng-repeat。 json 数组定义人员的名字、姓氏和年龄。

在我的 table 中,我正在尝试对所有使用 ng-class 指令的年轻人应用 CSS class。

<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}"

但是,我想将该逻辑转移到控制器中。

我在控制器中添加了这个;

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

但好像没有这么叫。

我在 app.js 中的方法定义应该是什么样子才能使它正常工作?

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

函数的签名是

isYoung(person)

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

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

如果你希望能够使用person.isYoung(),那么你需要将这个函数添加到数组中的所有人员中:

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