2017-08-06 18 views
0

タイトルではコントローラ内の他の関数で関数を呼び出しています。から入力してくださいをクリックしてください。コントローラのエラーから呼び出されたサービス関数は "関数ではありません"

TypeError: authenticationService._register is not a function at Object.$ctrl.registerSubmit (RegisterModalCtrl.js:14)

HTML::で呼び出さ

<form method="post" 
     name="registerData" 
     id="registerData" 
     ng-submit="$ctrl.registerSubmit()"> 

コントローラ機能提出:

var _register = function(registerExternalData) { 
    console.log('im in register service function'); 
    /* 
     ... 
    */ 
}; 
:コントローラ機能によって呼び出さ

$ctrl.registerSubmit = function() { 
    console.log('im in registerSubmit controller function'); 
    authenticationService._register(); // im line 14 obviously 
    $uibModalInstance.dismiss('cancel'); 
}; 

サービス機能を、私は、この入力をクリックすると、私はエラーを次取得します

Iコントローラに私のサービスを注入:

app.controller('RegisterModalCtrl', ['$scope', '$location', '$uibModalInstance', 'authenticationService', 
function($scope, $location, $uibModalInstance, authenticationService) { 
+0

this.authenticationService._register()を試しましたか? – rrd

+0

これは、 "TypeError:未定義の '_register'プロパティを読み取ることができません。このキーワードを追加すると、 – BT101

+0

$ ctrl is = this、コントロール定義の先頭に変更されますか? –

答えて

0

を使用すると、サービス内の関数を定義するために、角度サービス(&ない工場)、その後の代わりに、var使用thisを使用している場合(サービスは、コンストラクタ関数のようなものです):

this._register = function(registerExternalData) { 
    console.log('im in register service function'); 
    /* 
     ... 
    */ 
}; 

他のすべてが同じで、コード内に他の変更を加える必要はありません。

関連する問題