Двухстороннее связывание массива в AngularJS получает пустой набор

У меня есть некоторые проблемы с использованием массива, привязанного к моему компоненту.

Мой родительский шаблон:

<custom-component c-data-source="vm.dataSource"></custom-component>

vm.dataSource представляет собой массив строк.

Мой пользовательский компонент:

.component('customComponent', {
  bindings: {
    cDataSource: '='
  },
  controller: function () {
    var vm = this;
    vm.data = [];
    vm.$onInit = onInit;

    function onInit() {
      vm.data = vm.cDataSource;
      console.log(vm);
    }
  },
  controllerAs: 'vm',
  template: `
     {{ vm.cDataSource | json }}
     {{ vm.data | json }}
  `
}

Мой консольный вывод

controller {cDataSource: Array(0), ...}
> cDataSource: (4) ['lorem', ...]

И мой представленный дочерний шаблон:

['lorem', ...]
[]

Кажется, что когда я пытаюсь назначить vm.cDataSource для vm.data, набор пуст, но когда он выводит vm в консоль, он становится пустым в свернутом виде, но если я его разверну, он показывает элементы (4 в этом случае). Также, когда я печатаю в шаблоне, переменная с прямым связыванием (vm.cDataSource) имеет элементы, а локальная (vm.data) - нет.

Я использую AngularJS 1.5.0-rc.2.

1 ответ

Можете ли вы попробовать изменить

<custom-component c-data-source="vm.dataSource"></custom-component> к <custom-component c-data-source="dataSource"></custom-component>

ниже мой полный код для этого:

    импорт угловой из "угловой";
      var myMod = angular.module('plunker', []).controller('MainCtrl', функция ($scope) {
        $ Scope.DataSource=[1,3,4,5,6,7];
    });`

    myMod.component('customComponent', {
      привязки: {
        cDataSource: '='
      },
      контроллер: функция () {
        var vm = this;
        vm.data = [];
        vm.$onInit = onInit;

        function onInit() {
          vm.data  = vm.cDataSource;
          vm.cDataSource = [1,3,4,5,6,7,8,9,10];
          console.log(ВМ); 
        }
      },
      controllerAs: 'vm',
      Шаблон:`
         {{ vm.cDataSource | JSON}} 
{{vm.data | JSON}} ` });
Другие вопросы по тегам