Javascript AngularJS在重新加载页面时不需要的行为

Javascript AngularJS在重新加载页面时不需要的行为,javascript,angularjs,express,mean-stack,Javascript,Angularjs,Express,Mean Stack,我正在开发一个带有平均堆栈的Angular应用程序,因此假设您有一条对数据库进行查询的快速路径,结果将在响应中发送: app.get('/api', function(req, res){ Todo.find({}, "", function(err,todos){ if (err) res.send(err); res.json(todos); }); }); 在客户端: 控制器: 当我转到localhost:8

我正在开发一个带有平均堆栈的Angular应用程序,因此假设您有一条对数据库进行查询的快速路径,结果将在响应中发送:

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

        res.json(todos);
     }); 

});
在客户端:
控制器:

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

有没有关于如何避免这种行为的想法

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

这就是为什么只有在忽略散列和使用html5模式时才能获得数据

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

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

可能的重复感谢您的快速响应,是的,Todo.get()调用,我理解您的建议,但是如果用户知道API调用
/API/todos
,他无论如何都会看到数据,不是吗?是的,但是,如果用户在浏览器控制台中检查请求,则无论哪种方式都可以找到数据。您不能将API url隐藏在其他url后面,这样用户就找不到它们,但您可以通过不小心删除#非常感谢,我明白了,但现在我想如果用户删除#,他将得到一个get错误,但也许我可以在服务器的routes处理程序中捕捉到该错误,发送index.html,然后angular将捕获该路由。在这种情况下,您应该捕获localhost:8080/todos,并将用户重定向到localhost:8080/#/todos。理想情况下,您将使用HTML5 pushstate,而不使用#
  ...
  Todo.get().success(function(data){  //i got the service with the $http call
      $scope.todos = data;
  });