javascript - AngularJS 通过模板在组件之间进行通信(带有 promise )

标签 javascript angularjs angular-promise thread-synchronization

我正在开发一个包含 Actor 列表的应用程序。后端有具有多对多关系的标签和 Actor 。

我有 2 个组件,我想通过模板在它们之间传递 Unresolved promise 。

这是 actor-tag-detail 组件:

angular.module('actorTagDetail').component('actorTagDetail', {
    templateUrl: 'static/partials/actor-tag-detail/actor-tag-detail.template.html',
    controller: ['$routeParams', 'ActorTag',
        function ActorTagDetailController($routeParams, ActorTag) {


            var self = this; 
            self.actorTag = ActorTag.get({actorTagId: $routeParams.actorTagId})

        }
    ]
});

actorTag 从后端返回 ActorTag 对象的 JSON,如下所示:

{ "id": 37, "name": "Oscar Winner", "actors": [ 664, 668, 670, 673, 678, 696 ] }

我还有一个 Actor 列表组件,负责从后端检索 Actor 列表:

angular.module('actorList').component('actorList', {
    templateUrl: 'static/partials/actor-list/actor-list.template.html',
    bindings: {
        pk: '='
    },
    controller: ['Actor',
        function ActorListController(Actor) {
            var self = this;
            alert(self.pk)
            self.actors = Actor.query();  
            self.orderProp = 'name';
        }
    ]
});

在 actor-tag-details 的模板中,我尝试将属性传递给 actor-list 组件。

actor-tag-detail.template.html:

<actor-list pk="$ctrl.actorTag.actors"></actor-list>

我想要实现的是访问 actor-list 组件中检索到的 JSON 数据。但是,当我尝试在 actor-list.component 中进行 alert(self.pk) 时,我收到了“ Unresolved 对象错误”,而不是所需的结果。这种情况正在发生因为当 alert(self.pk) 运行时,尚未从后端检索数据。 我不知道如何补救这种情况。 有没有办法在接收组件中指定等待执行,直到 promise 得到解决并从后端收到数据?

或者,我做的完全错误吗?有更好的方法在组件之间传递此信息吗?

最佳答案

使用观察者来监听对象的变化:

function ActorListController($scope, Actor) {
    var self = this;
    $scope.$watch(function() {
        return self.pk;
    }, function(newValue, oldValue) {
        if(angular.isObject(newValue) {
            //alert(self.pk)
            self.actors = Actor.query();  
        }
    }
}

关于javascript - AngularJS 通过模板在组件之间进行通信(带有 promise ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38309537/

相关文章:

angularjs - Angular ng 级 : combine enumerated (array) classes and condition-based ones?

javascript - 没有 Hash 或 History 的 Ionic 框架

Angular 等待 bool 函数完成

javascript - angular.forEach 解决嵌套的 promise

javascript - jQuery 幻灯片循环失败

javascript - 获取JSON返回数据

javascript - 测试两个元素是否相同

javascript - 为什么简单地使用 ng-init 和 delete 会产生语法错误?

php - 如何将mysql搜索结果保存在变量中

javascript - AngularJS - 无法获得 $q.reject 和工作