ngresource在新页面中打开项目

时间:2017-02-24 02:24:02

标签: angularjs node.js ngresource

我在Nodejs和Angular中创建了一个Rest API。

在我的Angular应用程序中,我得到了:

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。我如何以及在何处使用angular {{}}来显示数据?另外,我还想在输出中添加一些自定义html。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以在a标记中使用目标空白。除此之外,您需要注入$ location或只使用window.location来获取完整路径,否则链接将无法正常工作。

故事很长:

&#13;
&#13;
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;
  
  
});
&#13;
<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>
&#13;
&#13;
&#13;

以及plunker以防万一。