Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 从angularui中的嵌套状态访问父状态控制器_Angularjs_Angular Ui - Fatal编程技术网

Angularjs 从angularui中的嵌套状态访问父状态控制器

Angularjs 从angularui中的嵌套状态访问父状态控制器,angularjs,angular-ui,Angularjs,Angular Ui,我已在项目中定义了嵌套状态: $stateProvider .state("MultiStepForm", { url: "/Sensor/MultiStepForm", templateUrl: "/app/MultiStepForm/MultiStepForm.html", controller: "MultiStepFormController", controllerAs: "MultiStepLog

我已在项目中定义了嵌套状态:

        $stateProvider
    .state("MultiStepForm", {
        url: "/Sensor/MultiStepForm",
        templateUrl: "/app/MultiStepForm/MultiStepForm.html",
        controller: "MultiStepFormController",
        controllerAs: "MultiStepLogic"
    })
        .state('MultiStepForm.step1', {
            url: '/step1',
            templateUrl: '/app/MultiStepForm/NestedViews/FormStep1.html',
            controller: "MultiStepLogicStep1Controller",
            controllerAs: "Step1"
        })
        .state('MultiStepForm.step2', {
            url: '/step2',
            templateUrl: '/app/MultiStepForm/NestedViews/FormStep2.html',
            controller: "MultiStepLogicStep2Controller",
            controllerAs: "Step2"
    })
        .state('MultiStepForm.step3', {
            url: '/step3',
            templateUrl: '/app/MultiStepForm/NestedViews/FormStep3.html',
            controller: "MultiStepLogicStep3Controller",
            controllerAs: "Step3"
        });
MultiStepForm状态中,我定义了此属性:

var self = this;
this.data = "someObject";
MultiStepForm.step3状态控制器(step3)中,我想访问父状态控制器中定义的属性:

angular
    .module('your_app')
    .controller('MultiStepLogicStep3Controller', MultiStepLogicStep3Controller);

function MultiStepLogicStep3Controller($state, your_custom_data) {
    //access your $state or custom data here
    this.custom_data = your_custom_data;
}
this.data=“MultiStepForm.step3状态中的一些数据”


我的问题是如何从嵌套状态控制器访问父属性?

在将数据注入控制器之前,需要“解析”该数据。如果在父级解决,则子级可以使用

像这样:

$stateProvider
    .state("MultiStepForm", {
        url: "/Sensor/MultiStepForm",
        templateUrl: "/app/MultiStepForm/MultiStepForm.html",
        controller: "MultiStepFormController",
        controllerAs: "MultiStepLogic",
        resolve: {
          your_custom_data: ['$stateParams', 'another_service',
                function($stateParams, another_service) {
                    //you can use $stateParams or other services here as needed to get the data you want
                    return the_value_of_your_custom_data;
                }],
    })
然后在控制器中:

angular
    .module('your_app')
    .controller('MultiStepLogicStep3Controller', MultiStepLogicStep3Controller);

function MultiStepLogicStep3Controller($state, your_custom_data) {
    //access your $state or custom data here
    this.custom_data = your_custom_data;
}

我必须这样做注入依赖:。控制器('MultiStepLogicStep3Controller',[“您的自定义数据”,MultiStepLogicStep3Controller]);不,这就是我格式化控制器的方式。是的,这对我有帮助!谢谢我不认为这是一个骗局,因为AngularV2正在向孤立的作用域移动,所以基于$scope的答案可能不是正确的。我下面的答案解决了这个问题,而不使用$scope。