Angular;激活”;数据出来后的手表
Angular, "activate" a watch after data has come in
我正在尝试在作用域上设置$watch,这样我就可以侦听更改,但是,我不希望在数据进入并填充之前,watch开始侦听。我使用$q工厂,然后填充项目,然后我希望手表在填充完所有内容后开始监听。我似乎记不清如何控制这些事件的顺序。
所以我的控制器里有
//call to the $q factoy to execut all http calls
getDefaults.resource.then(function(data){
//fill in scopes with data
$scope.allAccounts = data[0].data.accounts;
//THEN watch the scope for changes
$scope.$watch('selectedResources', function (newValue) {
//do action on change here
});
}
所以我想知道是否有任何方法可以控制这些事件的角度顺序。感谢阅读!
您可以为xhr调用创建一个服务:
.factory('xhrService', function ($http) {
return {
getData: function () {
return $http.get('/your/url').then(cb);
}
};
function cb(data) {
/// process data if you need
return data.accounts;
}
});
之后,你可以在你的控制器中这样使用它:
.controller('myController', function (xhrService) {
$scope.allAccounts = [];
xhrService.getData()
.then(function (accounts) {
$scope.allAccounts = accounts;
return $scope.allAccounts;
})
.then(function () {
$scope.$watch('allAccounts', function (newValue) {
// do something
}
});
});
我认为这是一个构建代码的好方法,因为你可以重用你的服务,你可以添加(或不添加)你需要的任何手表(在任何控制器内)
最重要的是,从文档来看:https://docs.angularjs.org/api/ng/service/$q-"$q.then方法返回一个新promise,该promise通过successCallback的返回值errorCallback被解析或拒绝"-这就是为什么每个then callback
都需要一个return语句。
相关文章:
- 用程序搜索JQuery数据表中的文本
- 要求输入在数据列表中
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 在VanillaJS中模拟模型双向数据绑定
- CSS-如何定位内容数据标题
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 序列化数据属性中对象的最可靠方法
- 如何将JSON数据导入我的ejs模板
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 画布数据到图像
- 使用jquery将mysql数据获取到新的表行中
- 使用html中的外部javascript进行数据验证
- 有时数据是't显示在浏览器中
- React中的数据集表示
- Angular只从数组中获取所需的数据
- Angular;激活”;数据出来后的手表
- 使用动手表获取单元格数据