【发布时间】:2017-07-14 12:57:18
【问题描述】:
我有以下代码:
angular
.module('myApp')
.directive('layout', function () {
return {
restrict: 'E',
template: '<div ng-include="layoutCtrl.pageLayout"></div>',
controller: 'LayoutController',
controllerAs: 'layoutCtrl',
bindToController: true,
scope: {
pageLayout: '=',
pageConfiguration: '=',
isPreview: '='
}
};
});
angular
.module('myApp')
.controller('LayoutController', LayoutController);
function LayoutController($scope, LayoutDTO, LayoutPreviewDTO) {
var self = this;
self.layoutDTO = LayoutDTO;
self.layoutPreviewDTO = LayoutPreviewDTO;
var test = $scope;
if(self.isPreview)
self.layoutModel = new self.layoutPreviewDTO(self.pageConfiguration);
else
self.layoutModel = new self.layoutDTO(self.pageConfiguration);
}
<div>
<layout page-layout="ctrl.layoutTemplateUrl" page-configuration="ctrl.pageConfiguration" is-preview="false"></layout>
</div>
在 Angular 1.5.3 版本中,这按预期工作,我的 Controller 中的变量带有值。现在,自从我升级到 1.6.x,self.pageConfiguration 现在是未定义的。
除了 Angular 版本,没有任何变化。
如何处理传入控制器中的指令的值?
【问题讨论】:
-
您是否检查过 Angular 更改日志中是否存在可能导致此代码“无法工作”的重大更改?究竟什么不起作用 - 你得到什么错误?您是否也将其他
ng原生模块更新为相同版本的 angular? -
self.pageConfiguration 现在是“未定义”,而不是我从 html
-
不幸的是,这太宽泛了。你能制作一个重现这个问题的小提琴吗?因为在不知道如何调用此指令等的情况下很难调试。
-
问题标签下有一个
edit链接 - 点击它并更新答案
标签: angularjs angular-directive angular-controller angularjs-1.6