【问题标题】:Calling sub function in ControllerAs AngularJS在ControllerAs AngularJS中调用子函数
【发布时间】:2016-08-03 22:31:13
【问题描述】:

嘿,我是 angularjs 的新手,我在 angularjs 中使用 controlleras 样式,因为代码既美观又干净。我的问题是在控制器中调用子函数我的代码如下

 //AngularJS CODE
      (function(){
         'use strict';

         angular.module('mAPP', ['ngMaterial']);

         function helpM(){
            var vm = this; 
            vm.SaveM = function(){
                alert('Save Me Now');
            }
         }

        function SaveCTRL(){
          var vm = this; 

          vm.nineOne = helpM.SaveM;
        }

        angular.module('mAPP')
                .controller('SaveCTRL', [SaveCTRL]); 

      })(); 

//HTML 代码

     <div ng-controller="SaveCTRL as main" layout="column" ng-cloak="" class="md-inline-form" ng-app="mAPP">


     <md-button class="md-raised md-primary" ng-click="main.nineOne()">Submit</md-button>

     </div>

但是警报没有执行提前非常感谢:(

【问题讨论】:

    标签: angularjs angularjs-scope angularjs-controlleras


    【解决方案1】:

    您必须创建helpM 的实例,否则this 将是undefined

    (function() {
      'use strict';
    
      angular.module('myApp', []);
    
      function helpM() {
        var vm = this;
        vm.SaveM = function() {
          alert('Save Me Now');
        }
        return vm;
      }
    
    
      function SaveCTRL() {
        var vm = this;
    
        vm.nineOne = new helpM().SaveM;
    
        return vm;
      }
    
      angular.module('myApp')
        .controller('SaveCTRL', SaveCTRL);
    
    })();
    <body ng-app="myApp">
      <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
      <div ng-controller="SaveCTRL as main" layout="column" ng-cloak="" class="md-inline-form">
    
    
        <md-button class="md-raised md-primary" ng-click="main.nineOne()">Submit</md-button>
    
      </div>
    </body>

    【讨论】:

    • 所以将函数视为需要作为实例的类才能获取 this 的值?谢谢它的作品
    【解决方案2】:

    你需要实例化 helpM 类:

    替换:

    vm.nineOne = helpM.SaveM
    

    收件人:

    var helpObj = new helpM();
    vm.nineOne = helpObj.SaveM.bind(helpObj);
    

    【讨论】:

    • 谢谢,但我遇到一个错误,它说无法读取未定义的属性“绑定”
    猜你喜欢
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多