2016-12-15 43 views
1

我遇到了使用角度路由和快速顯示部分顯示的問題。我想設置一些東西,所以我仍然可以使用帕格(以前的玉)來寫短格式的html。據我所知,一切都應該工作,沒有錯誤,一切都拉正確。我的應用已經工作的大多數其他部分(API調用,控制器等),我的主要頁面如下:帶有Express後端的角度路由模板UUl不起作用

doctype html 
    html(ng-app='myapp') 
     head 
      base(href='/') 
      script(src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.js") 
      script(src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular-route.js") 

     body 
      header#main 

      .content(ng-view) 


      script(src="/js/app.js") 
      script(src="/js/controllers/adminController.js") 
      script(src="/js/routes.js") 

這裏是我的路線文件

angular.module('myapp') 
.config(function ($routeProvider, $locationProvider) { 
    $routeProvider 
     .when('/admin', { 
      templateUrl: '/templates/admin', 
      controller: 'AdminController', 
      caseInsensitiveMatch: true 
     }) 
     .otherwise({ 
      template: '<h1>Page not found</h1>' 
     }) 
    ; 
    $locationProvider.html5Mode(true); 
}); 

最後,快遞航線:

router.get('/templates/:name', function(req, res, next) { 
    var name = 'templates/' + req.params.name; 
    console.log('Express: ' + name); 
    res.render(name, function(err, html){ 
     //this callback function can be removed. It's just for debugging. 
     if(err) 
      console.log("Error: " + err); 
     else 
      console.log("We're good!"); 
     res.send(html); 
    }); 
}); 

最後,這裏是節點服務器輸出:

Express: index 
GET /admin 304 68.962 ms - - 
GET /js/app.js 304 0.994 ms - - 
GET /js/controllers/adminController.js 304 0.751 ms - - 
GET /js/routes.js 304 14.590 ms - - 
Express: templates/admin 
We're good! 
GET /templates/admin 304 368.081 ms - - 

正如您所看到的,索引加載,調用partial,並且模板正在調用並呈現,就像您期望的那樣。

問題是ng-view沒有被替換或更新。如果我將路由更改爲模板而不是templateUrl,並且只是打印出一行文本,則所有工作都很好,所以我知道路由正在工作,這不是應用程序配置問題。

我一直堅持這幾天,沒有任何錯誤信息,我完全處於黑暗中,爲什麼這不起作用。

此外,當我查一下我的控制下,我得到的部分,所以它是通過適當的未來:

angular.module('buriedcinema.controllers') 
    .controller('AdminController', ['$templateCache', function(Movies, Users, $templateCache){ 
    console.log($templateCache.get('templates/admin')); 
} 
console: 
<h1> this is my partial </h1> 
+0

'GET/templates/admin'在檢查員或類似部門中的反應如何?或者嘗試'curl http:// YOURSERVER:PORT/teplates/admin'並查看渲染的內容。 JS控制檯說什麼?任何錯誤? – jigfox

+0

它工作正常,沒有錯誤。 – stevenamoore

+0

和服務器呈現什麼? – jigfox

回答

0

修正加入「controllerAs:」選項來我的路由和指我控制器由對象名稱。

.when('/admin', { 
      templateUrl: 'templates/admin', 
      controller: 'AdminController', 
      controllerAs: 'adminCtrl', 
      caseInsensitiveMatch: true 
     }) 

更技術性的解釋是,我沒有實例化一個對象的狀態,但試圖靜態使用我的控制器,所以它從來沒有更新。希望這可以幫助別人。