2014-06-30 63 views
0

我是Angular的新手,我試圖創建一個帶有2個視圖的單頁應用程序。使用ngRoute進行角度路由不起作用

當我加載應用程序時,無論我在瀏覽器中輸入什麼路線,始終向我顯示2個視圖中的第一個。 這是JavaScript代碼:

var appControllers = angular.module('appControllers', []); 
    appControllers.controller('HomeController', function($scope, $http) { 
    var promise = $http({ 
     method: 'GET', 
     url: 'restaurant.json' 
    }); 
    promise.then(function(obj) { 

     $scope.data = obj.data; 
    }); 
    }); 
    appControllers.controller('InformationController', function($scope, $http) { 
    var promise = $http({ 
     method: 'GET', 
     url: 'restaurant.json' 
    }); 
    promise.then(function(obj) { 

     $scope.data = obj.data; 
    }); 
    }); 

    var app = angular.module('myApp', ['ngRoute', 'appControllers']); 
    app.config(['$routeProvider', 
    function($routeProvider) { 
     $routeProvider. 
     when('/', { 
      templateUrl: 'partials/productlist.html', 
      controller: 'HomeController' 
     }). 
     when('/info', { 
      templateUrl: 'partials/information.html', 
      controller: 'InformationController' 
     }) 
    }]); 
    app.controller('HomeController', function($scope, $http) { 
    var promise = $http({ 
     method: 'GET', 
     url: 'restaurant.json' 
    }); 
    promise.then(function(obj) { 

     $scope.data = obj.data; 
    }); 
    }); 
    app.controller('InformationController', function($scope, $http) { 
    var promise = $http({ 
     method: 'GET', 
     url: 'restaurant.json' 
    }); 
    promise.then(function(obj) { 

     $scope.data = obj.data; 
    }); 
    }); 

我試圖改變其中我定義了2條路線2個視圖模板的順序。 如果我首先定義信息模板,則該模板將始終顯示,而另一個將不會顯示。 有人可以幫我解決這個問題嗎?

+0

似乎加載模板就好:http://plnkr.co/edit/uhl19fAbiHQbRp09hjzj?p=preview – Jens

回答

0

這裏是一個全功能的ngRoute:

sampleApp.config(['$routeProvider', 
    function($routeProvider) { 
    $routeProvider. 
     when('/a', { 
     templateUrl: 'templates/a.html', 
     controller: 'a' 
    }). 
    when('/av2', { 
     templateUrl: 'templates/av2.html', 
     controller: 'av2', 
    }). 
     when('/a3', { 
     templateUrl: 'templates/a3.html', 
     controller: 'a3' 
     }). 

     otherwise({ 
     redirectTo: '/a' 
     }); 
}]); 

嘗試交叉比較,以你的代碼,看看,如果你發現任何差異。我認爲它可能與你如何開始你的應用程序非常晚成腳本做:

var app = angular.module('myApp', ['ngRoute', 'appControllers']); 

通常情況下,這樣引導您的應用程序是要做,應該是在頂部,結果是最重要的事情之一。

+0

AngularJS並不是這樣,配置塊將在應用程序啓動之前執行,無論它們在哪裏定義。 – Jens