Ceb*_*yre 22 angularjs angularjs-directive
我想设置一个promise,然后将它抛入一个指令(使用数据绑定'='属性类型)并then在指令中执行魔术,但是将promise作为属性传递似乎会导致promise被解析为undefined,所以then(和任何其他承诺功能)不可用.
Ceb*_*yre 16
我怀疑这是由于这个特定的调整:
$ q promises由角度模板引擎识别,这意味着在模板中,您可以将附加到范围的promise视为结果值 - angular $ q docs
这实际上导致承诺在模板中转换$$v为promise用于存储结果值的值,并且在链接阶段,这可能仍未定义 - 转换后的值(即未定义),而不是promise本身然后传递给指令.
解决方法是不使用promise本身作为传递给指令的属性,而是使其成为父对象的一部分:父对象将不会运行$ q/template engine magic,因此您将能够深入了解来自父级的承诺并then从那里访问功能.
请参阅http://jsfiddle.net/cebjyre/95sjT/作为示例 - 取消注释第32行将导致失败,因为顶级承诺不再实际上是该点的承诺,而第17行的第二级承诺工作正常
谢谢.我已将此添加到Angular文档中.
http://docs.angularjs.org/api/#comment-984109158
为了实现这个包装你在父母的承诺:$ scope.myDirectiveAtrribute = {promise:deferred.promise}然后在指令中访问promise
$ scope.myDirectiveAtrribute.promise.then(函数(){});
| 归档时间: |
|
| 查看次数: |
14506 次 |
| 最近记录: |