我可以创建一个承诺来检查变量是否设置为角度吗?
Can i create a promise which checks if variable is set in angular?
我有一个范围变量,它是在几个请求和像这样的逻辑执行之后设置的 $scope.record = {};
$scope.record.field = "custom_value";
现在我有一个不同的函数,它独立于此执行执行。
function test(){ if($scope.record.field == 'some_value') { // do something }}
问题是只有在$scope.record.field具有值之后才应检查if
条件。
我尝试将其放入像这样的$q $q.all($scope.record.field).then(func)
但没有用.
我也尝试在$q.when($scope.record.field).then(func)
时使用,但仍然不起作用。
两次我都得到了未定义的值.
我不想将任何代码部分放在设置$scope.record.field的地方,这表示分配的完成,因为我想将两个部分分开和独立。他们都可以访问 同一范围 .
如何确保我的代码的某些部分仅在$scope.record.field
具有值后执行?
可能的实现片段
//one of the ways you could do that
'use strict';
(function() {
function MyService($q, Util) {
var trackThis;
var deferred;
var methods = {
setValue(val){
trackThis = val;
if (deferred) deferred.resolve(val);
},
listenForValue(val){
deferred = $q.defer();
return deferred.promise;
}
}
return methods;
}
angular.module('myApp')
.factory('MyService', MyService);
})();
编辑假设您有一个控制器,如下所示:
'use strict';
(function() {
class MyController {
constructor(MyService, AnotherService) {
MyService.listenForValue().then(function(value){
//do whatever you want with the value
});
// Now introduce have another guy setting the value
AnotherService.fetchValue(function(value){
MyService.setValue(value); //this guys will resolve the previous promise
});
}
}
angular.module('myApp')
.controller('MyController', MyController);
})();
注意:添加验证以防止可能出现的问题
备注:基本上你创建一个服务,允许你在不同的主动控制器之间共享状态,MyService允许你创建一个承诺,可以通过设置值随时解决。请注意,尽管每个承诺只能调用一次解析
相关文章:
- 这样链接时是否可以设置转换
- 是否有任何设置阻止JavaScript在系统上工作
- 是否可以在调用时动态设置Jquery Accordion的活动面板
- 是否可以使用flexbox显示模型设置元素的滚动位置
- 如何检查日期选择器和时间选择器元素是否使用JQuery/Javascript设置
- 是否有任何内置方法可以更改JavaScript对象'的属性设置为某个值
- 检查是否已设置GET变量
- 是否可以在网页上用另一种字体设置jqmath-display的样式
- 是否可以在reactjs中设置多个状态变量
- Javascript-检查是否设置了cookie
- Javascript 测试是否设置了变量
- 如何检测 javascript 文件是否被 IE11 安全设置阻止
- Javascript:是否可以在2D画布中为不同的文本设置不同的字体大小
- 我们是否需要设置超时进行短轮询
- 是否可以像在$routeProvider中一样在 Angular AMD 中设置页面标题
- 检测价格是否高于或低于200.00,然后设置(此)表格行的样式
- 是否可以设置柔盒插入、移除和项目位置的动画
- 是否可以在Internet Explorer 11中使用JavaScript设置选择元素的大小属性
- Symfony sfValidators:动态设置是否需要值
- 如何检查评级设置是否由 SharePoint 2010 中的 Javascript 启用