【问题标题】:AngularJS - updating directive's view after broadcasting eventAngularJS - 广播事件后更新指令的视图
【发布时间】:2016-07-08 09:42:29
【问题描述】:

在我的 Angular 应用程序(使用 ES6)中,我需要在使用以下代码从其他指令触发一些自定义事件后进行 ajax 调用:

class GridController {
constructor($scope, $rootScope, MyService) {
    this.$scope = $scope;
    this.$rootScope = $rootScope;
    this.MyService = MyService

    this.MyService.getItems(arg1, arg2).then((resp) => {
                this.viewModel= resp;
            });

    this.$rootScope.$on('myEvent', (e, args) => {
        this.MyService.getItems(arg1, args[1]).then((resp) => {
                this.viewModel= resp;
            });
        }
    });
}

问题是 成功 ajax 调用后视图没有更新。 有什么想法为什么会发生这种情况?

【问题讨论】:

  • this.MyService.getItems(arg1, args[1]) - 没有 arg1。错字?
  • 我已经删除了代码,这些参数来自当前指令的绑定属性

标签: javascript angularjs ajax ecmascript-6


【解决方案1】:

可能是模型更新问题试试这个。

$scope.$apply();

【讨论】:

    【解决方案2】:

    也许 ajax 调用发生在 angulars 摘要循环之外。你试过打电话给$scope.$digest()吗?这会触发当前作用域的观察者;他们应该接受模型更改。

    【讨论】:

    • @OstapLisovyj 你确定resp 包含正确的数据并且回调真的被调用了吗?一切看起来都很好。
    • 是的,数据格式相同,因为我在捕获事件之前制作了相同的 ajax,不同之处在于我使用事件中的一个参数进行调用
    猜你喜欢
    • 1970-01-01
    • 2015-07-29
    • 2023-04-03
    • 1970-01-01
    • 2016-02-12
    • 2016-12-17
    • 1970-01-01
    • 2013-09-30
    • 2014-07-22
    相关资源
    最近更新 更多