0

我正在使用 MEAN 堆栈开发一个 Angular 应用程序,因此假设您有一个快速路由来查询数据库,结果将在响应中发送:

app.get('/api', function(req, res){
    Todo.find({}, "", function(err,todos){
        if (err)
            res.send(err);

        res.json(todos);
     }); 

});

在客户端:
控制器:

  ...
  Todo.get().success(function(data){  //i got the service with the $http call
      $scope.todos = data;
  });   

当我转到 localhost:8080/#/api 时,我可以看到我的部分数据和我请求的数据。
我遇到的问题是,如果我省略主题标签,我看不到部分内容,我只能看到 JSON 格式的响应数据。
我也尝试使用 html5 模式,但如果我重新加载,我会得到相同的行为。

关于如何避免这种行为的任何想法?

4

1 回答 1

1

之后的任何内容#都不会发送到服务器。因此,当您转到时,expressjs 只会看到对 AngularJS 模板localhost:8080/#/api的请求并返回。/然后 AngularJS 使用 路由浏览器页面/#/api,它调用Todo.get()并且(我假设)调用localhost:8080/api,从数据库返回数据。

这就是为什么只有在省略哈希和使用 html5 模式时才能获取数据的原因。

我建议将您的 API 调用更改为: /api/todos- 从数据库返回数据

并将您的 AngularJS 路由更改为仅使用: /todos- 显示请求的部分和数据

于 2014-03-23T00:48:40.777 回答