0

我正在使用gulp-angular-templatecache將我所有的filename.view.html文件轉換爲templates.js文件。

然後,我使用$stateProvider創建我的狀態,並使用$templateCache創建我的狀態並使用抽象的「根」狀態。

$stateProvider 
    .state('app', { 
     abstract: true, 
     template: '<div ui-view></div>' 
    }) 
    .state('app.login', { 
     url: '/login', 
     template: $templateCache.get('components/login/login.html'), 
     controller: 'LoginController as login' 
    }); 

到目前爲止,一切正常。這些模板就像他們應該加載到我的頁面一樣,但無論我做什麼,我都無法讓控制器工作。

我的模塊和相關的控制器都相對簡單:

(function() { 

    'use strict'; 

    angular 
     .module('login', []) 
     .controller('LoginController', LoginController); 

    function LoginController() { 

     var vm = this; 

     vm.loginID = 'test'; 
     vm.password = 'test'; 

     vm.doLoginRequest = function() { 
      console.log('Performing login request...'); 
     } 

    } 

})(); 

我試圖圍繞這幾個不同的方式,但沒有出現工作:

  • 感動模板到的該.run(...)節模塊,並將其推入$templateCache,而不是
  • template,templateUrl和的不同變化的狀態配置
  • 從狀態卸下controllerAs語法和使用ng-controller代替
  • 使用舊式控制器語法的內部(即不是控制器的語法)

有沒有人有任何建議我可以如何解決這個問題?我一直在扯我們的頭髮幾個小時!

+0

你如何包含你的控制器的'登錄'模塊。你也不需要調用'$ templateCache.get()'。你可以做'templateUrl:'components/login/login.html'。 – rob

+0

您的路線是否在登錄模塊下定義爲配置?你的路線定義了哪個模塊? – Ajai

+0

「登錄」模塊僅作爲我的主應用程序模塊的依賴項包含在內。我的所有路由都在'.config(...)中定義)'塊作爲主應用程序模塊的一部分,例如'angular.module('app',['login']).config(function($ stateProvider){....});' –

回答

0

加載它們原來,我使用上由於某種原因角確實喜歡我的登錄模板<form>元素。我猜我已經錯誤地實施了<form>,以便它能夠與Angular一起使用。

刪除<form>元素可解決此問題。

0

如何預裝模板:

1)運行你的任務,以產生template.js視圖

2)在你的索引文件,下載所有模板

<script src="build/templates.js"></script> 

3)包含你的模塊作爲依賴(自動任務通常創建一個單獨的模塊,請確保你檢查,模塊的名稱是什麼)

angular.module('app', ['templates']) 

4)在app.config中部分只是參考意見,如果你是無緩存

.state('home', { 
     url: '/home', 
     views: { 
      "@": { 
       controller: 'homeController', 
       templateUrl: 'app/views/home.html' 

      }, 
     } 

    }) 
+0

我已經在執行步驟1-3,模板在我的應用程序中顯示得很好。只有控制器不起作用。我已經試過使用你的'.state'設置,如步驟4所詳述,但是我的路由根本不再顯示(並且不會在控制檯中引發任何錯誤)。 –

+0

我記得當我正在尋找解決方案來解決我的問題時,發現'@'自己使用而不是'content @'。我已經嘗試過,然後路線再次顯示,但控制器仍然無法工作。 –

+0

@ Pot-Nut內容@ - 來自您的視圖標記。更多文檔在這裏:https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views#view-names---relative-vs-absolute-names而我從視圖中刪除'內容' ,因爲這真的可能會引起誤解。換句話說,它正在尋找視角,這就是所謂的「內容」,並且很好,你發現了一個問題 – JanisP