我有以下指令:
CorrelatorApp.directive('correlator', function ($WebApi) {
return {
restrict: 'A',
scope: {
crOptions: '=',
},
link: function (scope, element, attrs) {
var options = scope.crOptions;
}
}
});
然后在我的index.html中像这样使用它:
<form correlator cr-options="correlatorOptions" name="CorrelatorForm" ng-controller="PortalMerchantController">
和我的correlatorOptions在控制器中定义:
CorrelatorApp.controller(“ PortalMerchantController”,函数
PortalMerchantController($scope, $http) {
$scope.correlatorOptions = {
dependant: {
controller: 'PortalMerchant',
model: 'portalMerchants',
nameField: 'PortalsMerchantName'
},
principal: {
controller: 'Merchant',
model: 'merchants',
nameField: 'Name'
}
};
});
当指令链接时,
scope.crOptions
的值未定义。如果将crOptions
设置为&
,然后调用它(var options = scope.crOptions()
),则代码将正确执行,并且我获得了控制器中定义的对象。我想念什么? 最佳答案
将ngController
指令移到form元素之外。
在1.2.0及更高版本中,ngController
和form
具有同级作用域(以前它们将共享隔离范围)。 Here's the change that causes this
您希望form
是ngController
的子级,以便它可以访问其范围:
<div ng-controller="PortalMerchantController">
<form correlator cr-options="correlatorOptions" name="CorrelatorForm"></form>
working fiddle