2016-04-13 93 views
3

嗨我是新來的angularjs我在angularjs中使用controlleras風格,因爲代碼是可呈現和淨。我的問題是調用控制器子功能我的代碼如下控制器中的調用子功能AngularJS

//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> 

但警報犯規提前:(

回答

0

你必須做出的helpM一個實例,否則thisundefined

(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>

+0

所以對待一個功能就像一個類需要是實例來獲得這個值?謝謝它的作品 –

0

執行非常感謝你需要實例化helpM類:

替換:

vm.nineOne = helpM.SaveM 

要:

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

感謝,但我遇到它說無法讀取屬性是一個錯誤「綁定'未定義 –

相關問題