2016-04-13 3 views
3

Привет, я новичок в angularjs Im, используя контроллер в стиле angularjs, поскольку код является презентабельным и нетто. Моя проблема заключается в вызове подфункции в контроллере мой код, как следоватьВызов вспомогательной функции в контроллере 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 иначе 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>

+0

поэтому относитесь к функции, подобной классу, который должен быть экземпляром, чтобы получить значение этого? Спасибо, это работает –

0

Вам нужно создать экземпляр helpM Класс:

Заменить:

vm.nineOne = helpM.SaveM 

To:

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

спасибо, но я сталкиваюсь ошибку он говорит, не удается прочитать свойство «привязка 'undefined –

Смежные вопросы