将json加载的数据作为单向绑定属性传递给指令angularjs

时间:2015-03-29 14:54:26

标签: javascript json angularjs

这是我的上下文:我有一个父控制器,通过服务加载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; (仅用于测试,即使它不是我需要的)选项属性,但我遇到了同样的问题,它只在第一次工作。

感谢每一位帮助。

提前致谢

0 个答案:

没有答案