2017-07-12 72 views
0

我剛開始用AngularJs工作,我被困在這個地方:與此名稱的控制器未註冊(無法調用控制器)

我有index.html,然後那裏面我包括腳本標籤像角oclazyload和我的application.js文件

<html ng-app="mymodule"> 
<head> 
    <script src="angular.min.js"></script> 
    <script src="ocLazyLoad.min.js"></script> 
    <script src="angular-css-injector.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.0/angular-route.min.js"></script> 
    <script src="application.js"></script> 

</head> 

<body> 
    <div ng-controller="mycontroller"> 
      <h1>Sample Page</h1> 
      <div ng-include="login"></div> 
    </div> 


</body> 

我的application.js裏面

我使用oclazyload cssInjector和nginclude加載另一個JS,CSS和HTML文件(login.js,style.css中和的login.html)。

我的application.js文件

var mymodule=angular.module("mymodule",["oc.lazyLoad","angular.css.injector"]); 
mymodule.controller("mycontroller",function($scope,$ocLazyLoad,cssInjector){ 

      $ocLazyLoad.load("/task1/login.js"); 
      cssInjector.add("style.css"); 
      $scope.login="login.html"; 
     }); 

在我login.js文件我定義一個控制器的LoginController

login.js文件:

var mymodule=angular.module("mymodule",[]); 
mymodule.controller("logincontroller",function($scope) 
    { 
    $scope.title="hello World!!!"; 
    }) 

,並在我的登錄。 HTML我打電話給那個控制器ie(登錄控制器)

​​

所有的文件正在加載,但我得到錯誤,該名稱的控制器未註冊。

+0

Offtopic,如果你剛開始angularjs建議您直接交換到角。 – Doomenik

回答

0

您可能有計時問題。可以在login.js之前加載login.html?嘗試在$ocLazyLoad.load("/task1/login.js")承諾中更改$scope.login。像

$ocLazyLoad.load("/task1/login.js").then(function(){ $scope.login = 'login.html '}); 

而且你必須改變這種

var mymodule=angular.module("mymodule",[]); 
mymodule.controller("logincontroller",function($scope) 
{ 
    $scope.title="hello World!!!"; 
}) 

這個

var mymodule=angular.module("mymodule"); 
mymodule.controller("logincontroller",function($scope) 
{ 
    $scope.title="hello World!!!"; 
}) 
+0

它的工作.. thanx很多我在這個敲了我的頭幾個小時我知道我必須做一些事情(.then函數),但無法弄清楚..很多很多朋友 – sachin

+0

高興地看到你的問題解決了:) –

相關問題