2015-10-29 50 views
0

所以我一直在嘗試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'); 

這就是當頁面重新加載,我的部分因爲我的路線被忽略而無法加載。

+0

你可以請更新代碼在jsfiddle – Mitul

回答