我在这个问题上的斗智尽头,所以非常感谢任何帮助!
过去几周我一直在创建一个角度/节点/ mysql应用程序,并遇到了这个问题。我有一个运行mysql的数据库,用于存储用户及其信息的列表。我创建了一个API,为前端提供访问用户数据的权限,以便进行登录。流程如下:
用户进入新状态,需要预先加载有关它们的信息:
.state('info', {
url: '/info',
templateUrl: 'views/info.html',
controller: 'InfoController',
resolve: {
postPromise: ['user', function(user) {
return user.loadInfo();
}]
代码在用户工厂中运行,以便在页面加载之前获取数据:
app.factory('user', ['$http', 'auth', function($http, auth) {
var user = {};
user.loadInfo = function() {
var userId = auth.currentUser();
return $http.get('/users/' + userId).success(function(data) {
angular.copy(data, user);
});
};
return user;
}]);
第一次页面加载正常。然后我通过$ state.go('home')或其他东西导航到其他地方,当我尝试返回同一页面(/ info)时,它有时不起作用。我输入新的网址会发生什么,浏览器基本上忽略它,只显示当前页面的网址。
我已经尝试评论出angular.copy,这似乎解决了这个问题,但我仍然需要复制我从服务器获取的数据(成功传输)。
所以我的主要问题是:我可以使用angular.copy的替代方案吗?我仍然觉得它在所有的例子中使用都很奇怪,但是这里引起了这个问题。
次要问题:如果找到angular.copy的话,有没有人看到过这个问题,并猜测是什么导致了这个问题?在我正在做的事情中,有什么东西可以看出来吗?
奖励信息:我不知道如何描述这一点,但有时候如果我等了很长时间才能回到问题网址,那就行了......我注意到一个电话是当我在输入问题网址时(甚至在点击输入之前)输入服务器,当发生这种情况时,似乎工作正常。但它是断断续续的,并且如果通过按钮点击调用它们,则停止任何$ state.go()调用工作到该问题URL。
答案 0 :(得分:0)
好吧,我得到了这个答案,而且非常愚蠢。 "用户"是工厂内部的一个对象," loadInfo"是附加到用户的功能。当我执行angular.copy()时,来自服务器的数据覆盖了loadInfo函数,因此我无法再次使用它...
所以是的,那已经解决了。