指令隔离范围双向数据绑定导致" undefined"

时间:2017-10-03 13:37:40

标签: angularjs

我指的是视图中的指令(路径组件的一部分)。该指令配置了隔离范围和双向数据绑定。

路线组件视图:

dom: '<"#dropDownList">frtlip'

路由组件控制器:

<audit-directive  audit-id="pageAudit.selectedAuditId"></audit-directive>

指令定义:

angular.module('components.pageAudit', ['components.sections.audit', 'components.sections.audit.directive'])
.controller('PageAuditController', ['$scope', '$routeParams', function ($scope, $routeParams) {


    console.log("*** PageAuditController with $routeParams => "+ JSON.stringify($routeParams, null, 4));

    var vm = this;
    vm.selectedAuditId = $routeParams.id;
    console.log('Selected audit id at PageAuditController=> '+vm.selectedAuditId);
}]);

指令控制人:

angular.module('components.sections.audit.directive', [])
.directive('auditDirective', auditDirective);

function auditDirective() {
    return {
        restrict: 'EA',
        scope : {
            auditId : '='
        },
        controller: 'AuditController',
        controllerAs: 'audit',
        template: '<div ng-include="components/audit/audit.html" layout-fill></div>'
    };
}

当指令实例化时,即使从父视图传递了有效值,指令控制器(AuditController)上的$ scope.auditId的值也会记录为未定义。我已在父控制器中记录该值并记录该值。

因此,日志如下所示..

angular.module('components.sections.audit', [])
    .controller('AuditController', ['AuditManagementService','$scope', '$timeout', '$location', '$routeParams', function (AuditManagementService, $scope, $timeout, $location, $routeParams) {
        console.log("*****************Audit Controller");


        $scope.audit = {};

        console.log("Selected Audit Id at AuditController=> "+ $scope.auditId);

    }]);

我试图找出为什么指令控制器会将值解释为未定义?

注意:当我尝试使用chrome中的Batarang检查范围时,我看到auditId属性的值为2.因此,可能是,当我尝试使用console.log进行日志记录时,它尚未填充,并且只在以后填充?

0 个答案:

没有答案