2016-04-12 9 views
0

私は、この質問に約100回尋ねられたことを知っています。そして私は多くのソリューションを試しました。残念ながら誰も私のために働いていませんでした。Onsen [ng:areq]引数 ''は関数ではありません。定義されていません

私は温泉とAngularJSでプログラミングしています。

HTML:

<ons-template id="signin.html"> 
    <ons-dialog var="dialog">    
     <ons-toolbar> 
      <div class="center">Log In</div> 
     </ons-toolbar> 

     <div class="login-form" ng-app="SignIn" ng-controller="SignCtrl"> 
      <input type="email" class="text-input--underbar" placeholder="Email" value=""> 
      <input type="password" class="text-input--underbar" placeholder="Password" value=""> 
      <br><br> 
      <ons-button modifier="large" class="login-button">Log In</ons-button> 
      <br> 
      <ons-button modifier="quiet" class="forgot-password">Forgot password?</ons-button> 
      <ons-button modifier="quiet" class="forgot-password" ng-click="showSignUp()">Not a member?</ons-button> 
     </div> 

    </ons-dialog> 
</ons-template> 

Javascipt(JS/signctrl.js):

(function(angular){ 
    // init functions 
    'use strict'; 

    var app = angular.module('SignIn', []); 
    app.controller('SignCtrl', function($scope) { 
     $scope.showSignUp = function() {  
      alert("foo!"); 
      ons.createDialog('signup.html').then(function(dialog) { dialog.show(); }); 
     }; 
    }); 

})(window.angular); 

、付属のファイル:

<script src="components/loader.js"></script> 
<link rel="stylesheet" href="components/loader.css"> 
<link rel="stylesheet" href="css/style.css"> 
<link rel="stylesheet" href="css/signin.css"> 
<link rel="stylesheet" href="css/signup.css"> 
<link rel="stylesheet" href="css/locations.css"> 

<link rel="stylesheet" href="lib/onsen/css/onsenui.css"> 
<link rel="stylesheet" href="components/monaca-onsenui/css/onsen-css-components-sunshine-theme.css"> 
<script src="lib/onsen/js/angular/angular.js"></script> 
<script src="lib/onsen/js/onsenui.js"></script> 
<script src="js/signctrl.js"></script> 

とons.bootstrapは、()で呼び出されます(js/signctrl.jsを含める前に)始めてください。

私のお手伝いをしていただければ幸いです。

PS:それはおそらくタイミングの問題だ

Error: [ng:areq] Argument 'SignCtrl' is not a function, got undefined 
http://errors.angularjs.org/1.4.3/ng/areq?p0=SignCtrl&p1=not%20a%20function%2C%20got%20undefined 
    at file:///data/data/mobi.monaca.debugger/files/projects/cloud/570c898afd17349b6c3d57a4/www/components/loader.js:1460:4931 
    at assertArg (file:///data/data/mobi.monaca.debugger/files/projects/cloud/570c898afd17349b6c3d57a4/www/components/loader.js:1460:18360) 
    at assertArgFn (file:///data/data/mobi.monaca.debugger/files/projects/cloud/570c898afd17349b6c3d57a4/www/components/loader.js:1460:18562) 
    at file:///data/data/mobi.monaca.debugger/files/projects/cloud/570c898afd17349b6c3d57a4/www/components/loader.js:1462:20613 
    at setupControllers (file:///data/data/mobi.monaca.debugger/files/projects/cloud/570c898afd17349b6c3d57a4/www/components/loader.js:1461:27741) 
    at nodeLinkFn (file:///data/data/mobi.monaca.debugger/files/projects/cloud/570c898afd17349b6c3d57a4/www/components/loader.js:1461:28989) 
    at compositeLinkFn (file:///data/data/mobi.monaca.debugger/files/projects/cloud/570c898afd17349b6c3d57a4/www/components/loader.js:1461:21271) 
    at file:///data/data/mobi.monaca.debugger/files/projects/cloud/570c898afd17349b6c3d57a4/www/components/loader.js:1461:19821 
    at pre (file:///data/data/mobi.monaca.debugger/files/projects/cloud/570c898afd17349b6c3d57a4/www/components/loader.js:1474:25379) 
    at invokeLinkFn (file:///data/data/mobi.monaca.debugger/files/projects/cloud/570c898afd17349b6c3d57a4/www/components/loader.js:1462:13182) 
+0

私は温泉に精通していませんが、 'ons- *'要素は 'ng-app'と' ng-controller'を含む要素の中にある必要がありますか? – Lex

+0

これらはあらかじめ定義された要素です。彼らは(私の場合)する必要があります。 ご意見ありがとうございます。 – David

+0

これは私が尋ねた理由です。なぜなら、それらは 'ng-app'と' ng-controller'を含む要素の中にすべて含まれているわけではないからです。 – Lex

答えて

1

:本当の完全なエラー:フルエラーが[ng:areq] Argument 'SignCtrl' is not a function, got undefined

PPSです。コントローラを含む要素が初期化される前に、コントローラにアクセスしようとしています。 これを解決するには、角度コードをファンクション(see the docs)にラップしてください。コードが実行されると、コードが実行されます。例えば

ons.ready(function() { 

    //Your angular code 

}) 

また、あなたがあなたのコントローラに温泉モジュールを追加するのを忘れているようです。

あなたの問題を解決することを願っています!

関連する問題