Pass/bind 从 ng-repeat 到 Angular JS 子组件的数据

Pass/bind data from ng-repeat to a child component in Angular JS

我正在学习 Angular 并且我正在尝试弄清楚如何 pass/bind 向子组件发送数据。我有一个包含以下内容的主模板:

<div class="container" ng-repeat="data in treeCtrl.tree" ng-include="'templates/node.html'"></div>

treeCtrl的来源ui-路由器状态:

 $stateProvider
  .state('tree', {
    abstract: true,
    controller: 'TreeController as treeCtrl',
    url: '',
    template: '<ui-view/>',
    resolve: {
      treeData: ['TreeData', function(TreeData) {
        return TreeData.data();
      }]
    }
  })

在 node.html 中,我正在显示组件:

 <action-form data="data.label"></action-form>

动作表单组件定义如下:

  (function () {
  "use strict";

  angular.module('dTreeApp')
    .component('actionForm', {
      templateUrl: 'templates/action.component.html',
      bindings: {
        data: '='
      },
      controller: actionFormController
    });

  function actionFormController() {
  }
})();

在 action.component.html 我有:

<p>data is : {{data}} </p>
<p>data is : {{data.label}} </p>

除了数据没有正确传递外,我最终正确显示了组件。我尝试更新组件定义中的绑定以使用 =< @ 但 none 产生了任何结果。

我觉得你的代码没问题

你的绑定有问题。如果你想绑定数据(你希望根据你的代码使用 datadata.label)那么你应该绑定它,而不是绑定 data.label

那就这样做吧。

<action-form data="data"></action-form>

我能够使用模板中的控制器密钥修复检索所需的数据。我不需要改变任何其他东西。这是模板现在的样子:

<p>data is : {{$ctrl.data |json}} </p>
<p>data is : {{$ctrl.data.label}} </p>

如果我没有在 form-action 属性中传递数据,第一行将不会打印数据,但 data.label 打印正常。一旦我改变

<action-form data="data.label"></action-form>

<action-form data="data"></action-form>

这些行都以 json 格式和标签 属性 打印数据。