2016-04-13 3 views
3

Hey ich bin neu zu angularjs Im mit Controllers Stil in angularjs wie der Code ist vorzeigbar und netto. Mein Problem ruft Unterfunktion in Controller als mein CodeAufruf von Sub-Funktion in 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-Code

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

Aber die Warnung tut ausführen vielen Dank im Voraus :(

Antwort

0

Sie müssen eine Instanz helpM machen sonst wird thisundefined sein

(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

also behandeln Sie eine Funktion wie eine Klasse, die Instanz sein muss, um den Wert von diesem zu bekommen? Danke, es funktioniert –

0

Sie die instanziiert folgen müssen, helpM Klasse:

ersetzen:

vm.nineOne = helpM.SaveM 

An:

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

Dank, aber ich ist ein Fehler aufgetreten sagt, es kann Eigenschaft ‚bind nicht lesen 'von undefined –

Verwandte Themen