我指的是视图中的指令(路径组件的一部分)。该指令配置了隔离范围和双向数据绑定。
路线组件视图:
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进行日志记录时,它尚未填充,并且只在以后填充?