AngularJS 组件之间通过模板进行通信(使用 promise)
AngularJS communication between components through a template (with a promise)
我正在开发一个包含演员列表的应用程序。后端有具有多对多关系的标签和演员。
我有 2 个组件,我想通过模板在它们之间传递未解决的承诺。
这是 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 returns JSON 如下所示:
{
"id": 37,
"name": "Oscar Winner",
"actors": [
664,
668,
670,
673,
678,
696
] }
我还有一个演员列表组件,负责从后端检索演员列表:
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 组件。
演员标签-detail.template.html:
<actor-list pk="$ctrl.actorTag.actors"></actor-list>
我想要实现的是访问演员列表组件中检索到的 JSON 数据。但是,当我尝试 alert(self.pk)
in actor-list.component.This 时,我得到了一个“未解决的对象错误”而不是预期的结果,因为当 alert(self.pk)
运行时,尚未从后端检索数据。
我不知道如何补救这种情况。
有没有办法在接收组件中指定等待执行,直到承诺得到解决并从后端接收到数据?
或者,我做的完全错了,有更好的方法在组件之间传递这些信息吗?
使用观察者监听对象变化:
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();
}
}
}
我正在开发一个包含演员列表的应用程序。后端有具有多对多关系的标签和演员。
我有 2 个组件,我想通过模板在它们之间传递未解决的承诺。
这是 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 returns JSON 如下所示:
{ "id": 37, "name": "Oscar Winner", "actors": [ 664, 668, 670, 673, 678, 696 ] }
我还有一个演员列表组件,负责从后端检索演员列表:
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 组件。
演员标签-detail.template.html:
<actor-list pk="$ctrl.actorTag.actors"></actor-list>
我想要实现的是访问演员列表组件中检索到的 JSON 数据。但是,当我尝试 alert(self.pk)
in actor-list.component.This 时,我得到了一个“未解决的对象错误”而不是预期的结果,因为当 alert(self.pk)
运行时,尚未从后端检索数据。
我不知道如何补救这种情况。
有没有办法在接收组件中指定等待执行,直到承诺得到解决并从后端接收到数据?
或者,我做的完全错了,有更好的方法在组件之间传递这些信息吗?
使用观察者监听对象变化:
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();
}
}
}