我对 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/