2015-02-05 166 views
0

我試圖手動構建一個shell試圖弄清楚它是如何工作

結構正常工作:

- application(php stuff) 

- webroot 
-- app 
--- app.js 

-- templates 
--- main 
---- login 
----- login.html 

index.html (with angularjs libs) 

app.js:

function config($routeProvider){ 
    $routeProvider 
     .when("/login",{ 
      templateUrl: "../templates/main/login/login.html" 
     }) 
     .otherwise({ redirectTo:"/other" }); 
} 


angular 
    .module("app", ["ngRoute", "ngResource"]) 
    .config(config); 

登錄:

<div>LOGIN test template</div> 

「/ other」不會退出。 此外,我嘗試了不同的pathes爲: templateUrl: 「模板/主/登錄/ login.html的」 templateUrl: 「根目錄/模板/主/登錄/ login.html的」

由URL帶有一個方式「#」(如nameDomain.com/#/login,但它應該是nameDomain.com/#login),但似乎angularjs只允許/ nameUrlTemplate

回答

1

看看角的文檔爲routeProvider,因爲這應該清理一些你的困惑。

我想你想在這裏做的是使用你的.otherwise現有的路線是什麼,因爲自從/other沒有在任何地方定義,角不知道你是什麼吧:

var app = angular.module('app', ['ngRoute', 'ngResource']); 
app.config(function config($routeProvider) { 
    $routeProvider 
    .when('/', { 
     templateUrl: '../templates/main/index.html' 
    }) 
    .when('/login', { 
     templateUrl: '../templates/main/login/login.html' 
    }) 
    .otherwise({ 
     redirectTo: '/' 
    }); 
}); 

我相信這應該會給你你正在尋找的效果。顯然你可以在你認爲合適的時候調整它,例如,如果你想爲任何你沒有定義的東西擁有404路由/模板。就目前而言,這將永遠回落到不存在的特定路線的主頁。當你考慮用戶和登錄/註銷狀態時,這會變得更加複雜,但這更多的是一個概念驗證。

此外,ngRoute將默認渲染的,因爲這/#/foo格式的URL使用hashbang風格的格式,從而使爬蟲的搜索引擎能夠解析和讀取一個JavaScript webpp的各個頁面/狀態。你指的是一個文檔片段,它們是而非可以通過抓取工具進行索引。您可以詳細瞭解Google的Webmaster docs上的差異。

+0

這有什麼錯我的WHEN。當( '/登錄',{ templateUrl: '../templates/main/login/login.html' }) – Donovant 2015-02-06 10:12:11

+0

另外:我想有/#改爲登錄/#/登錄 – Donovant 2015-02-06 10:44:42