这是我的上下文:我有一个父控制器,通过服务加载json数据。
通过ng-repeat我通过@属性将数据传递给指令,因此每个指令都有自己的数据副本,因此它可以修改它而不影响父作用域中的初始加载数据。
数据是一个对象数组。
这是加载数据的控制器(父级):
$scope.allOptions = [];
optionService.load(function(data) {
angular.forEach(data, function(d) {
this.push(d);
}, $scope.allOptions);
});
optionService.getAll().then(function(data){
angular.forEach(data[0].data, function(d) {
this.push(d);
}, $scope.allOptions);
angular.forEach(data[1].data, function(d) {
this.push(d);
}, $scope.allOptions);
angular.forEach(data[2].data, function(d) {
this.push(d);
}, $scope.allOptions);
});
我调用我的指令的相关视图是:
<compare-car options="{{allOptions}}"></compare-car>
指令:
angular.module('ad.module')
.directive('compareCar', function() {
return {
restrict: 'E',
scope: {
options: '@'
},
templateUrl: 'compare.html',
controllerAs: 'vm',
bindToController: true,
controller: function($scope) {
var vm = this;
// some methods
},
link: {
post: function($scope, el, attr, vm) {
var options = angular.fromJson(vm.options);
options.forEach(function(opt) {
// some modification to options
});
vm.allinall = options;
}
}
};
});
在与指令相关联的模板中,我调用
<div ng-repeat="option in vm.allOptions">
所以,我的问题是传递给options属性的数据是空的,以解决我添加的ng-model-options =&#34; {debounce:3000}&#34;调用指令,以便在调用指令时可以使用这些选项。由于断点延迟,这在第一次和调试时有效。
我试图使用&#39; =&#39; (仅用于测试,即使它不是我需要的)选项属性,但我遇到了同样的问题,它只在第一次工作。
感谢每一位帮助。
提前致谢