在我的控制器中,我从另一项服务中获得了承诺。我在其中添加了“ then”子句,但从未调用过“ then”。
看到这个矮人:http
://plnkr.co/edit/dX0Oz1?p=preview
(javascript版本)
“ fakeLongRunningPromise”会创建一个承诺,该承诺会在2秒后自动解决。
一旦履行了诺言,我便在控制器本身中向控制台发送了一条便条。
我可以说该诺言正在得到解决,因为“解决诺言”已输出到控制台。为什么不输出“承诺已解决”?
认为承诺可能会“超出范围”,因为控制者返回了吗?
AngularJS承诺解析的结果在$ digest周期内异步传播。因此,then
仅在进入$
digest循环时才调用向其注册的回调。在setTimeout
执行“的AngularJS世界之外”,因此不会触发回调。
解决方案是使用Scope.$apply
还是$timeout
服务。这是带有$ apply的版本:
window.setTimeout(function() {
console.log("Resolving promise");
$scope.$apply(function(){
deffered.resolve("worked");
});
}, 2000);
这是固定的插件(JavaScript):http
://plnkr.co/edit/g5AnUK6oq2OBz7q2MEh7?
p=
preview
问题内容: 我正在使用茉莉花对angularjs控制器进行单元测试,该控制器在范围内将变量设置为调用返回promise对象的服务方法的结果: 服务内部: 在我的angularjs应用程序上下文中,这可以正常工作,但在茉莉花单元测试中则无法工作。我已经确认“ then”回调在单元测试中正在执行,但是$ scope.myVar承诺永远不会设置为回调的返回值。 我的单元测试: 另外,如果我将控制器更改为
我想在每次加载页面时向服务人员发送一条消息。 第一次加载页面时,它调用寄存器(),然后侦听navigator.serviceWorker上的“控制器更改”事件,但这永远不会触发。 我如何知道何时可以开始发送邮件给服务人员?
问题内容: AngularJS文档说: $ qpromise由模板引擎以角度识别,这意味着在模板中,您可以将附加到作用域的promise视为它们的结果值。 所以有人可以解释一下这种提琴无法正常工作的原因吗?不可能更改文本字段的值。但是分配保证$http服务返回作用域字段的工作就像一个超级按钮。 控制器: HTML: 问题答案: 您需要在promise对象上使用then()函数: 就您而言,我认为您
本文向大家介绍AngularJS控制器继承自另一控制器,包括了AngularJS控制器继承自另一控制器的使用技巧和注意事项,需要的朋友参考一下 AngularJS里控制器继承,常用的就是作用域嵌套作用域。默认情况下,当前作用域中无法找到某个属性时,就会在父级作用域中进行查找,若找不到直至查找到$rootScope。 但有些情况下,rootScope下就是我们的controller,不可能将大量的公
问题内容: 升级到1.2后,我的服务返回的promise行为有所不同…简单服务myDates: 在早期版本中,我可以在控制器中执行以下操作: 从getDates返回的promise可以直接绑定到Select元素。现在这不起作用,我被迫在控制器中对promise进行回调,否则数据将无法绑定: 文档仍然说: $ qpromise由模板引擎以角度识别,这意味着在模板中,您可以将附加到作用域的promis
1)我的plist配置提供背景模式: 2) 在中,我有: 3) 我在委托中声明了协议。 4)我实现了以下方法,但它永远不会被触发。(只有当我用“XCode-”模拟获取时才有效 为什么?这是DP5测试错误吗?我应该雷达这个吗?