angularjs - 当 AngularJS 中的范围发生更改时刷新 Controller 中的数据

标签 angularjs angularjs-directive angularjs-controller

我对 Angular 还很陌生,我在这里阅读了很多帖子并用谷歌搜索了这个主题,但我无法得到明确的答案。我真正想要实现的是。假设我有一个 Controller A,这是数据的实际来源。我通过将其绑定(bind)到 HTML 将其传递给一个指令。从这个指令我实际上得到了另一个 Controller 的源代码。 所以我需要找到当 Controller A的数据改变时我可以改变 Controller 的数据的方法。

Controller A

angular.module('page.leadAndOpportunity.ctrl', []).controller('LeadAndOpportunityController', ['$scope', '$rootScope', '$timeout', function ($scope, $rootScope, $timeout, leadAndOpportunityService) {

    $scope.selectDataSource = function (condition) {
        var dataSource = [];
        var dataSource = $scope.leadsDataSource.filter(function (item) {
            return item.typeName === condition;
        });
        $scope.leadsDataSource = [];
        $scope.leadsDataSource = dataSource;
        console.log($scope.leadsDataSource);
    }

}]);

HTML

<ng-senab-grid datasource="{{ leadsDataSource }}" defaultdata="{{defaultColumns}}" skipdata="{{ skipColumns }}" enablepersonalisation="true"></ng-senab-grid>

指令

angular.module('page.gridView.drct', []).directive("ngSenabGrid", ["$rootScope", function ($rootScope) {
        return {
            restrict: "E",
            templateUrl: "pages/gridView/page.gridView.tpl.html",
            scope: {
                enablePersonalisation: "@enablepersonalisation",
                datasource: "@datasource",
                defaultdata: "@defaultdata",
                skipdata: "@skipdata"
            },
        }
    }]
);

Controller B

 var _datasource = JSON.parse($scope.datasource);
//rest the data follows

因此,当 $scope.leadsDataSource Controller A 上获取更改时,

var _datasource = JSON.parse($scope.datasource);

也应该改变

不知道可不可以。但我需要更改数据 提前致谢

最佳答案

删除变量的大括号。因为这是指令,不需要添加大括号

<ng-senab-grid datasource="leadsDataSource" defaultdata="defaultColumns" skipdata="skipColumns" enablepersonalisation="true"></ng-senab-grid>

如果你想获取变量的值,那么使用“=”,如果你使用“&”,它只会获取字符串

 scope: {
            enablePersonalisation: "=enablepersonalisation",
            datasource: "=datasource",
            defaultdata: "=defaultdata",
            skipdata: "=skipdata"
           },

还将指令模块注入(inject)到你的 Angular 模块

angular.module('page.leadAndOpportunity.ctrl', ['page.gridView.drct'])

关于angularjs - 当 AngularJS 中的范围发生更改时刷新 Controller 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37857627/

相关文章:

ruby-on-rails - 使用设备或其他用户管理实现 JWT

javascript - Angular JS : Scope values is not displayed in H1 tags

javascript - 在 AngularJS 事件单元测试中模拟事件对象

javascript - 为 AngularJS Web App 导入 JSON 数据

angularjs - 使用 ngTagsInput 自动完成无法读取未定义的属性 'then'

javascript - 使用 Angular 指令中的 jQuery.matchHeight

javascript - AngularJS:在其 Controller 中访问指令的 DOM 元素

javascript - Angular.module 缩小错误

javascript - 如何将参数从指令方法传递到 Controller ?

javascript - 用于 mouseenter 和 mouseleave 的 AngularJS 自定义指令