简体   繁体   English

将参数从父控制器传递给组件

[英]Pass parameters to a component from a parent controller

I am using Angularjs 1.7 and I am trying to pass an array from the parent controller to the component.How can I pass arraySteps and selectedSteps to the component. 我正在使用Angularjs 1.7,我试图将一个数组从父控制器传递给组件。如何将arraySteps和selectedSteps传递给组件。

I tried the following but didn't work. 我尝试了以下但没有奏效。 I am not getting the arraySteps in the component controller 我没有在组件控制器中获得arraySteps

ulMultiselect.component.js ulMultiselect.component.js

angular.module('ulMultiselect.module').component('ulMultiselect', {
    templateUrl: 'app/components/ulMultiselect/ulMultiselect.template.html',
    controller: 'ulMultiselect.controller',
    bindings: {
        arraySteps: '<'
    },
    transclude: true
});

ulMultiselect.controller.js ulMultiselect.controller.js

angular.module('ulMultiselect.module').controller('ulMultiselect.controller', 
function () {
    var self = this;
    self.$onInit = function () {
        if (typeof self.arraySteps === 'undefined') {
            self.arraySteps = [];
        }
    };
});

ulMultiselect.template.html ulMultiselect.template.html

<div layout="row">
    <md-input-container style="width:100%">
        <label>Steps</label>
        <md-select ng-model="$ctrl.selectedSteps" multiple>
            <md-option ng-value="step.StepName" ng-repeat="step in $ctrl.arraySteps">{{step.StepName}}</md-option>
        </md-select>
    </md-input-container>
</div>

mainTest.html mainTest.html

<ul-Multiselect arraySteps="$ctrl.steps"></ul-Multiselect>

mainTest.controller.js mainTest.controller.js

angular.module('view.mainTest.module').controller('view.mainTest.controller', 
function () {
    var self = this;
    self.$onInit = function () {
        self.steps = [{ StepName: "Step1" }, { StepName: "Step2" }, { StepName: "Step3" }];
    }; 
});

The one-way binding needs to be normalized to kebab-case: 单向绑定需要标准化为kebab-case:

̶<̶u̶l̶-̶M̶u̶l̶t̶i̶s̶e̶l̶e̶c̶t̶ ̶a̶r̶r̶a̶y̶S̶t̶e̶p̶s̶=̶"̶$̶c̶t̶r̶l̶.̶s̶t̶e̶p̶s̶"̶>̶<̶/̶u̶l̶-̶M̶u̶l̶t̶i̶s̶e̶l̶e̶c̶t̶>̶
<ul-multiselect array-steps="$ctrl.steps"></ul-multiselect>

For more information, see 有关更多信息,请参阅

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM