Javascript 在加载资源之前是否在控制器中使用资源?
我目前正在开发一个angular应用程序,我将在这里发布一些示例代码 在我的服务中,我有一个通过$resource访问rest api的方法:Javascript 在加载资源之前是否在控制器中使用资源?,javascript,angularjs,Javascript,Angularjs,我目前正在开发一个angular应用程序,我将在这里发布一些示例代码 在我的服务中,我有一个通过$resource访问rest api的方法: function getData() { resource.get({}, function success(data) { return data; }, function error() { console.log('error') }) } 现在,在一个已注入服务的控制器中,我尝试使用上一页
function getData() {
resource.get({}, function success(data) {
return data;
}, function error() {
console.log('error')
})
}
现在,在一个已注入服务的控制器中,我尝试使用上一页中的一些条件数据,这些条件作为routeParameter传递,如下所示:
$scope.data = MyResource.getData()
$scope.editingObject = angular.copy($scope.data[$routeParams.objIndex])
在我看来,我希望绑定到$scope.editingObject,但由于该代码立即执行,并且数据可能尚未从服务器返回,因此我收到以下错误:
TypeError:无法读取未定义的属性“0”
现在我明白了,在数据从服务器返回之前,我无法访问阵列,但我的问题更多的是,如何以能够访问该数据的方式构造此服务
为了解决这个问题,我尝试在$scope.data上放置一个监视,并监视数据是否到达,但当数据到达时,它从不触发。我已经在设置的超时中使用console.log确认了这一点,以在几秒钟后检查数据是否已到达它已到达的点。。。对象将更新以反映这一点
有谁能告诉我有关服务、资源和访问数据的正确方向吗?我想看看$watch代码,因为它应该在收到数据时触发。但无论如何,您应该使用服务返回的承诺:
MyResource.getData().then(function(data) {
$scope.data = data;
$scope.editingObject = angular.copy($scope.data[$routeParams.objIndex])
});
你好,包,我刚刚尝试过这个,但我收到了TypeError:undefined不是一个函数。我已经附上了我用来测试你的例子的代码样本。因此,您不会从OkrsServices.test返回任何内容。然后在未定义的情况下调用。在okrsmodel.getThanks之前添加return语句感谢您的帮助。我发现问题是你上面提到的。。。在我的angular版本中,我必须放$promise,否则它将无法识别它。非常感谢你的帮助我在这件事上耽搁了两天。