Angularjs多个控制器,只有第一个工作

时间:2016-11-14 19:42:53

标签: angularjs

我使用angularjs 1.5.8基本上模仿带有方程式的excel表。这三行需要两个影响两个输出的输入。我正在努力研究如何编写我的脚本以包含多个控制器,因为我正在为每一行构建一个控制器。如果我在我的脚本中注释掉第二个和第三个控制器,第一行就可以了。没有注释行,没有任何作用。我觉得我非常接近但不确定我哪里出错了。任何帮助将不胜感激。

这是工作控制器:

angular.module('ADMApp', []) .controller('ADMFarViewController', [function() { var ctrl = this; ctrl.ADMCalc = function() { var ADMFarViewImgHeightvar = Number(ctrl.ADMFarViewImgHeightvar || 0); var ADMFarViewVertPixvar = Number(ctrl.ADMFarViewVertPixvar || 0); ctrl.ADM_FarViewFarthestViewer_ans = (ADMFarViewImgHeightvar * 3438) / ADMFarViewVertPixvar; ctrl.ADM_FarViewViewRat_ans = ctrl.ADM_FarViewFarthestViewer_ans / ADMFarViewImgHeightvar; } }]);

这是我的傻瓜:https://plnkr.co/edit/6nKEPCeOqx7zEFx5M5WZ

2 个答案:

答案 0 :(得分:2)

每次都不要重新定义模块。

// Code goes here
var ADMApp = angular.module('ADMApp', []);

ADMApp.controller('ADMFarViewController', [function() {
    var ctrl = this;
    ctrl.ADMCalc = function() {
      var ADMFarViewImgHeightvar = Number(ctrl.ADMFarViewImgHeightvar || 0);
      var ADMFarViewVertPixvar = Number(ctrl.ADMFarViewVertPixvar || 0);
      ctrl.ADM_FarViewFarthestViewer_ans = (ADMFarViewImgHeightvar * 3438) / ADMFarViewVertPixvar;
      ctrl.ADM_FarViewViewRat_ans = ctrl.ADM_FarViewFarthestViewer_ans / ADMFarViewImgHeightvar;
    }
}]);



ADMApp.controller('ADMMinImgController', [function() {
        var ctrl = this;
        ctrl.ADMCalc = function() {
            var ADM_MinImgHeightVertPix_var = Number(ctrl.ADM_MinImgHeightVertPix_var || 0);
            var ADM_MinImgHeightFarthestViewer_var = Number(ctrl.ADM_MinImgHeightFarthestViewer_var || 0);
            ctrl.ADM_MinImgHeightImageHeight_ans = (ADM_MinImgHeightVertPix_var * ADM_MinImgHeightFarthestViewer_var) / 3438;
            ctrl.ADM_MinImgHeightViewRat_ans = ADM_MinImgHeightFarthestViewer_var / ctrl.ADM_MinImgHeightImageHeight_ans;
        }
}]);


ADMApp.controller('ADMMaxImgController', [function() {
        var ctrl = this;
        ctrl.ADMCalc = function() {
            var ADM_MaxImgImageHeight_var = Number(ctrl.ADM_MaxImgImageHeight_var || 0);
            var ADM_MaxImgFarthestViewer_var = Number(ctrl.ADM_MaxImgFarthestViewer_var || 0);
            ctrl.ADM_MaxImgVertPix_ans = (ADM_MaxImgImageHeight_var * 3438) / ADM_MaxImgFarthestViewer_var;
            ctrl.ADM_MaxImgViewRat_ans = ADM_MaxImgFarthestViewer_var / ADM_MaxImgImageHeight_var;
        }
}]);

答案 1 :(得分:1)

angular.module('ADMApp', [])

该代码行定义模块' ADMApp'。由于您在代码中使用了三行,因此您需要定义相同的模块三次,有效地覆盖其先前的定义,包含先前添加的控制器。

将其保存在变量中,或使用angular.module('ADMApp')获取对先前定义的模块的引用。