0

我来自Rails背景,正在尝试使用AngularJS with Rails. 我被困在一件非常简单的事情上:如何在一个Angularjs environment? 让我举个例子吧。

我有一个名为 Medication 的 rails 模型,它有两个属性,dose 和 count。我想要一个返回剂量*计数的“总”虚拟属性。这在 Rails 中是微不足道的,因为它只是 Medication 类的一个实例方法。

那么,它是如何映射到AngularJS世界的呢?

澄清:我正在对我有一个MedicationsController. 对于每个 ng-repeat 循环,我得到一个“ medication”对象,我想在其中应用这个“实例方法”

total = function() { return dosage * count }

那是怎么编码的?我把函数放在哪里?

4

1 回答 1

6

使用 AngularJS 非常简单,因为您可以在 AngularJS 视图中使用任何 JavaScript 函数。因此,只需在您的对象上(或直接在范围上)定义一个函数。例如,给一个这样的控制器:

var MedicationCtrl = function($scope) {    
    $scope.medication = {
        dosage : 0.5,
        count : 10,
        total : function() {
            return this.dosage * this.count;
        }
    };
}​

你可以简单地写:

Total: {{medication.total()}}

这是一个 jsFiddle:http: //jsfiddle.net/4r5g5/1/

然后,如果您有一组项目并且不想在对象级别上放置任何逻辑,则可以在控制器上定义此方法,如下所示:

var MedicationCtrl = function($scope) {    
    $scope.total = function(medication) {
      return medication.dosage * medication.count;
    };
};

并从如下标记中使用此函数:

<ul ng-repeat="m in medications" ng-controller="MedicationCtrl">
    <li>{{m.dosage}} + {{m.count}} = {{total(m)}}</li>
</ul>

而上面的jsFiddle中的代码:http: //jsfiddle.net/4r5g5/3/

于 2012-11-28T19:56:51.597 回答