我有一个由2个指令组成的页面:
PeopleHeader
PeopleAction
我在peopleAction指令中做了一些处理
当这些处理结束时,我想在header指令中更新变量并刷新标题
任何帮助将不胜感激
非常感谢你
标头指令
app.directive("peopleHeader", [
"ListeCmcQueryHelper", function(ListeQueryHelper) {
return {
templateUrl : "partials/people/peopleHeader.html",
restrict : "E",
link : function(scope) {
scope.nbPeople= ListeQueryHelper.totalRequested; // how to refresh this variable and so the view from PeopleActionDirective
}
};
}
]);
与headerDirective相关联的Html
<h3> {{'PEOPLE.TITLE' | translate}} </h3>
<h5> {{'PEOPLE.TOTAL' | translate }} : {{nbPeople.total}}</h5>
PeopleActionDirective
app.directive("peopleAction", [
"ListeQueryHelper", function(ListeQueryHelper) {
return {
templateUrl : "partials/people/peopleAction.html",
restrict : "E",
link : function(scope) {
scope.deletePeople= function() {
ListeQueryHelper.deletePeople();
scope.nbPeople= ListeQueryHelper.totalRequested;
// need to send this to HeaderDirective and so refresh the view
}
}
};
}
]);
非常感谢
答案 0 :(得分:1)
ListeQueryHelper
是一项服务,对吗?
如果没有,那就把它弄成一个。
因此,在您的指令中scope.nbPeople
具有相同的引用:ListeQueryHelper.totalRequested
。
在其中一个中更改它将反映在另一个中。因此,如果您在scope.deletePeople
中拨打ng-click
(自动为您调用scope.$apply
),则可以在另一个指令中scope.$watch('nbPeople', ...
。
或者只是将其绑定到模板(<span>{{nbPeople}}</span>
)。
答案 1 :(得分:1)
简而言之,链接功能只运行一次。因此,在示例代码中,它只会从ListeQueryHelper.totalRequested
获取一次值。
解决方案1: 使用&#39; =&#39;在two way binding中执行此操作 顺便说一句,如果你选择解决方案1,你需要熟悉指令。首先阅读该链接。
解决方案2:
请改用对象。 scope.nbPeople=ListeQueryHelper.SomeObj
并在html中:nbPeople.totalRequested
解决方案3: 使用活动。