我正在尝试创建一个在执行控制器之前运行的 Angular 服务。我知道我可以使用控制器的“解决”属性,但这让我在我的所有控制器中重复这一点。
那么如何创建一个使用一些 Ajax 请求并让控制器等待其执行的服务呢?
谢谢
我正在尝试创建一个在执行控制器之前运行的 Angular 服务。我知道我可以使用控制器的“解决”属性,但这让我在我的所有控制器中重复这一点。
那么如何创建一个使用一些 Ajax 请求并让控制器等待其执行的服务呢?
谢谢
但是,无法延迟控制器,您可以确保在将服务传递给范围之前加载服务或在更改时刷新范围。有几种不同的方法可以做到这一点:
仅当服务已加载时才在范围内创建变量:
MyService.get({}, function(serv) {
self.original = serv;
$scope.serv = new MyService(self.original);
});
如果您正在使用$http
并等待成功将值传递给范围。
$http({method: 'GET', url: '/someUrl'}).
success(function(data, status, headers, config) {
// --- do your thing here ---
}).
error(function(data, status, headers, config) {
});
用于$watch
查看变量是否已更新:
scope.$watch('myVariableToWatch', function(value) {
scope.myVariableToWatch = value;
})
最后,您还可以选择在加载服务之前隐藏任何视图元素,因此 HTML 将是:
<div ng-show="serviceDidLoad"> some content here </div>
放入$scope.serviceDidLoad = true
您测试的控制器以查看服务已加载