Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在加载资源之前是否在控制器中使用资源?_Javascript_Angularjs - Fatal编程技术网

Javascript 在加载资源之前是否在控制器中使用资源?

Javascript 在加载资源之前是否在控制器中使用资源?,javascript,angularjs,Javascript,Angularjs,我目前正在开发一个angular应用程序,我将在这里发布一些示例代码 在我的服务中,我有一个通过$resource访问rest api的方法: function getData() { resource.get({}, function success(data) { return data; }, function error() { console.log('error') }) } 现在,在一个已注入服务的控制器中,我尝试使用上一页

我目前正在开发一个angular应用程序,我将在这里发布一些示例代码

在我的服务中,我有一个通过$resource访问rest api的方法:

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,否则它将无法识别它。非常感谢你的帮助我在这件事上耽搁了两天。