如何在Angular 1.5组件中等待绑定(没有$ scope。$ watch)

tcmoore

我正在编写Angular 1.5指令,并且在绑定数据存在之前尝试操作绑定数据时遇到了一个令人讨厌的问题。

这是我的代码:

app.component('formSelector', {
  bindings: {
    forms: '='
  },
  controller: function(FormSvc) {

    var ctrl = this
    this.favorites = []

    FormSvc.GetFavorites()
    .then(function(results) {
    ctrl.favorites = results
    for (var i = 0; i < ctrl.favorites.length; i++) {
      for (var j = 0; j < ctrl.forms.length; j++) {
          if (ctrl.favorites[i].id == ctrl.newForms[j].id) ctrl.forms[j].favorite = true
      }
     }
    })
}
...

如您所见,我正在进行AJAX调用以获取收藏夹,然后将其与表单的绑定列表进行对照。

问题是,即使在绑定尚未填充之前,promise仍在兑现...因此,在我运行循环时,ctrl.forms仍未定义!

在不使用$ scope。$ watch(这是1.5个组件的吸引力的一部分)的情况下,如何等待绑定完成?

Cosmin Ababei

您可以使用新的生命周期挂钩(具体而言)$onChanges,通过调用isFirstChange方法来检测绑定的第一次更改在此处阅读有关此内容的更多信息

这是一个例子:

<div ng-app="app" ng-controller="MyCtrl as $ctrl">
  <my-component binding="$ctrl.binding"></my-component>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.4/angular.js"></script>
<script>
  angular
    .module('app', [])
    .controller('MyCtrl', function($timeout) {
      $timeout(() => {
        this.binding = 'first value';
      }, 750);

      $timeout(() => {
        this.binding = 'second value';
      }, 1500);
    })
    .component('myComponent', {
      bindings: {
        binding: '<'
      },
      controller: function() {
        // Use es6 destructuring to extract exactly what we need
        this.$onChanges = function({binding}) {
          if (angular.isDefined(binding)) {
            console.log({
              currentValue: binding.currentValue, 
              isFirstChange: binding.isFirstChange()
            });
          }
        }
      }
    });
</script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

$ watch()没有更新$ scope

来自分类Dev

如何在TypeScript上使用$ scope。$ watch

来自分类Dev

$scope.$watch 如何工作

来自分类Dev

在没有$ scope或$ watch的情况下跨Angular控制器访问函数

来自分类Dev

$ scope。$ watch和$ watch之间有什么区别?

来自分类Dev

我如何使用带有角度全栈生成器语法的$ scope和$ watch?

来自分类Dev

在Angular JS中,有没有办法在不使用scope.watch的情况下监视DOM的更改?

来自分类Dev

scope。$ watch在指令链接函数中没有被调用

来自分类Dev

没有$ scope.digest,$ watch不会触发

来自分类Dev

$ scope。$ watch似乎没有观看工厂变量

来自分类Dev

如何在ES5中将升级的Angular 1服务/工厂注入Angular 2组件?

来自分类Dev

$ scope。$ watch在Angular中无法在Ionic / Cordova中使用

来自分类Dev

调用angular.extend不会导致$ scope。$ watch触发

来自分类Dev

带scope。$ watch的Angular指令强制验证其他字段

来自分类Dev

$ scope。$ watch使用Angular和Ionic / Cordova的div标签

来自分类Dev

调用angular.extend不会导致$ scope。$ watch触发

来自分类Dev

带scope。$ watch的Angular指令强制验证其他字段

来自分类Dev

Angular自定义指令-$ scope。$ watch不触发

来自分类Dev

Angular:$ scope。$ watch一个嵌套的集合

来自分类Dev

没有$ scope。$ watch的服务和控制器之间的双向绑定。这是不好的做法吗?

来自分类Dev

如何在Angular 2组件函数中使用Angular 1指令变量

来自分类Dev

如何轻松确定$ scope。$ watch中添加/删除的内容?

来自分类Dev

如何检测$ scope。$ watch中已删除的项目?

来自分类Dev

无法弄清楚如何使用$ scope。$ watch

来自分类Dev

是否有类似于$ scope。$ watch的NSMutableArray之类的东西

来自分类Dev

角度$ scope。$ watch具有可返回承诺的函数

来自分类Dev

AngularJS FileReader和$ scope。$ watch有问题吗?

来自分类Dev

$ location.search()-如何在$ scope。$ watch函数中使用作用域中的参数?

来自分类Dev

使用`this。$ watch`代替`$ scope。$ watch`和'Controller As'

Related 相关文章

  1. 1

    $ watch()没有更新$ scope

  2. 2

    如何在TypeScript上使用$ scope。$ watch

  3. 3

    $scope.$watch 如何工作

  4. 4

    在没有$ scope或$ watch的情况下跨Angular控制器访问函数

  5. 5

    $ scope。$ watch和$ watch之间有什么区别?

  6. 6

    我如何使用带有角度全栈生成器语法的$ scope和$ watch?

  7. 7

    在Angular JS中,有没有办法在不使用scope.watch的情况下监视DOM的更改?

  8. 8

    scope。$ watch在指令链接函数中没有被调用

  9. 9

    没有$ scope.digest,$ watch不会触发

  10. 10

    $ scope。$ watch似乎没有观看工厂变量

  11. 11

    如何在ES5中将升级的Angular 1服务/工厂注入Angular 2组件?

  12. 12

    $ scope。$ watch在Angular中无法在Ionic / Cordova中使用

  13. 13

    调用angular.extend不会导致$ scope。$ watch触发

  14. 14

    带scope。$ watch的Angular指令强制验证其他字段

  15. 15

    $ scope。$ watch使用Angular和Ionic / Cordova的div标签

  16. 16

    调用angular.extend不会导致$ scope。$ watch触发

  17. 17

    带scope。$ watch的Angular指令强制验证其他字段

  18. 18

    Angular自定义指令-$ scope。$ watch不触发

  19. 19

    Angular:$ scope。$ watch一个嵌套的集合

  20. 20

    没有$ scope。$ watch的服务和控制器之间的双向绑定。这是不好的做法吗?

  21. 21

    如何在Angular 2组件函数中使用Angular 1指令变量

  22. 22

    如何轻松确定$ scope。$ watch中添加/删除的内容?

  23. 23

    如何检测$ scope。$ watch中已删除的项目?

  24. 24

    无法弄清楚如何使用$ scope。$ watch

  25. 25

    是否有类似于$ scope。$ watch的NSMutableArray之类的东西

  26. 26

    角度$ scope。$ watch具有可返回承诺的函数

  27. 27

    AngularJS FileReader和$ scope。$ watch有问题吗?

  28. 28

    $ location.search()-如何在$ scope。$ watch函数中使用作用域中的参数?

  29. 29

    使用`this。$ watch`代替`$ scope。$ watch`和'Controller As'

热门标签

归档