2017-02-24 100 views
0

我在Nodejs和Angular中創建了Rest API。ngresource在新頁面中打開項目

在我的角度應用我得到:

app.factory('User', function($resource) { 
    return $resource('/api/users/:id', { id: '@_id' }); 
}); 


app.controller("myctrl", function($scope, $http, UserService, $location){ 
    $scope.users = User.query(); 
     $scope.getData = function(userID){ 
      $location.absUrl("/api/students/"+userID); 
     } 
    }); 

在的NodeJS:

app.use('/api', require('./routes/api')); 

我能列出所有需要的信息。現在我想讓用戶在新頁面中打開。所以,當我點擊用戶,我有:

編輯:

<base href="/"> //in my html head 
<p><ng-click="getData(user.id)">username</p> 

當點擊用戶名,沒有任何反應。控制檯日誌中也沒有錯誤。

編輯

$location.url("/api/students/"+userID);提出適當的位置在地址欄中但頁面保持不變。所以我用

$window.location.assign("/api/students/"+userID); 

我不知道我是否應該使用$window.location.assign。這工作,我得到所有適當的細節。現在唯一的問題是它的全部在JSON。如何以及在哪裏使用角度{{}}來顯示數據?另外我還想在該輸出中添加一些自定義html。

謝謝。

回答

1

您可以在您的a標記中使用目標空白。除此之外,您還需要注入$ location或僅使用window.location來獲取完整路徑,否則鏈接將無法工作。

所以長話短說:

var app = angular.module('plunker', []); 
 

 
app.controller('MainCtrl', function($scope, $location) { 
 
    
 
    $scope.userID = 10; 
 
    $scope.baseUrl = $location.protocol() + "://" + $location.host() + ":" + $location.port(); 
 
    
 
    $scope.fullUrl = $scope.baseUrl + '/api/students/' + $scope.userID; 
 
    
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="plunker"> 
 
    <div ng-controller="MainCtrl"> 
 
    <p>Hello!</p> 
 
    
 
    <a target="_blank" href="{{baseUrl + '/api/students/' + userID}}" >Go to new window</a> 
 
    <br/> 
 
    <a target="_blank" href="{{fullUrl}}" >Go to new window</a> 
 
    </div> 
 

 
</div>

和公正的情況下plunker

+0

它說:'不能GET/newpage/id = 58'如何添加路由到'newpage/id'在nodejs服務器? – Somename

+0

抱歉忘了提及你必須把完整的網址,而不是隻有那部分,使用$ location.absUrl() – Yaser

+0

仍然無法包裹我的頭。請你給我舉個例子。我編輯了這個問題。請檢查。 – Somename