2016-05-22 76 views
0

我剛剛開始使用AngularJs。我試圖實現一個登錄指令。但是我看不到輸出結果?我的控制檯沒有錯誤。AngularJs指令不工作/可見

我的應用程序結構:

enter image description here

index.html是不可見的)

login.directive.js

(function() { 
    'use strict'; 

    angular 
     .module('lnjapp.login',[]) 
     .directive('login', login); 

    function login() { 
     var directive = { 
      template: '<p>test</p>', 
      //restrict: 'E', 
      Controller: LoginController, 
      controllerAs: 'vm' 
     }; 
     return directive; 
    } 
})(); 

app.js

(function() { 
    'use strict'; 

    angular.module('lnjapp', ['ngRoute', 'ngCookies', 'angular.filter','lnjapp.login','lnjapp.config']) 
    .constant('GLOBALS', { 
     url:'http://domain.dev/api/v1/' 
    }); 

    $(document).ready(function() { 
     $.material.init(); 
    }); 
})(); 

應用程序/頁/ login.html的

<login></login> 

- 編輯 -

login.controller.js

(function() { 
    'use strict'; 

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

function LoginController() 
{} 
})(); 

路線-C onfig.js

angular 
    .module('lnjapp.config',[]) 
    .config(config); 

function config($routeProvider) { 
    $routeProvider 
     .when('/', { 
      templateUrl: '/app/pages/login.html' 
     }); 
} 

我在做什麼錯在這裏?

+0

您是否嘗試過取消註釋'restrict'屬性?角度文檔說它默認爲元素或屬性,但我發誓我之前遇到過。 – mdickin

+0

沒有足夠的信息來解決您的問題。這可能是頁面路徑的問題,您不在此處顯示;此外,如果控制器不存在,則聲明控制器的指令將不會加載,因此可能是控制器定義存在問題,您也沒有在此列出。 – Claies

+0

@Claies請參閱我的編輯。 – Jamie

回答

2

login.controller.js創建lnjapp.login兩次,一次在login.directive.js又一遍。第二次創建該模塊時,它會覆蓋第一個,並且第一個文件中創建的內容將不再可訪問。

您應該始終只創建一個模塊,並獲取已創建的模塊以在所有其他情況下添加其他功能。

集(創建):angular.module('lnjapp.login',[])

獲取(消耗):angular.module('lnjapp.login')

欲瞭解更多信息和其他最佳實踐,看見約翰爸爸的優秀Angular Style Guide

+0

Thankyou解決了問題! – Jamie