所以我一直在嘗試AngularJs,我喜歡你如何使用$ routeProvider在配置方法加載諧音與Ajax調用模板。
所以我這樣做:
var $app = angular.module('app', ['ngRoute']);
$app.config(["$routeProvider", "$locationProvider", function ($routeProvider, $locationProvider) {
$routeProvider
.when("/pop", {controller: "popCtrl", templateUrl: "partials/pop_test.html"})
.when("/dashboard", {controller: "dashBoardCtrl", templateUrl: "partials/dashboard.html"})
.otherwise({redirectTo: "/"})
$locationProvider.html5Mode(true);
}])
我覺得這是一個偉大的系統加載動態內容,但現在這是我遇到的問題。
我有一個表格:
<form ng-submit action="">
<input type="text" name="username" placeholder="Username" ng-model="creds.username">
<input type="text" name="password" placeholder="Password" ng-model="creds.password">
<input ng-click="login()" type="submit" value="Login">
</form>
以這種形式我檢查creds.username和creds.password的價值,如果他們匹配,我有一個用戶名密碼對象,你就能夠加載儀表板。
我不會顯示登錄功能的全過程,因爲這將會使事情變得更加混亂,但我沿着此線的地方做了一個登錄功能:
login = function(creds){
if(creds.username == 'admin' && creds.password == '222'){
$location.path('/dashboard');
}else{
alert("Wrong Credentials");
}
},
現在,這裏的問題是,何時/儀表盤重新加載頁面,而不是使Ajax調用和加載我的部分像與當方法
的URL變化所以本作的Ajax調用裝入的部分:
.when("/dashboard", {controller: "dashBoardCtrl", templateUrl: "partials/dashboard.html"})
當我用$ location.path重定向頁面時,它重新加載頁面,而不是使用Ajax加載局部頁面。
$location.path('/dashboard');
我認爲,我在我的app.js文件中設置了路線將允許網頁進行Ajax調用,但我想這是因爲$ location.path自動重新加載頁面在ajax調用之前,爲什麼這不起作用。
所以這裏的問題是我怎樣才能加載我的部分與Ajax像我用路由,但與$位置不重新加載頁面。或者我還需要做其他事情才能做到這一點?
幫助表示讚賞,謝謝。
UPDATE:
所以我忽略了一個重要信息,那就是我的導航鏈接。
<ul>
<li><a href="/">Home</a></li>
<li><a href="/pop">Pop</a></li>
<li><a href="/dashboard">Dashboard</a></li>
</ul>
如果我點擊它們,我的路線工作得很好,頁面不會重新加載。我做了一個ajax調用,我的partials被加載。但是,當我這樣做
$location.path('/dashboard');
這就是當頁面重新加載,我的部分因爲我的路線被忽略而無法加載。
你可以請更新代碼在jsfiddle – Mitul