我有以下指令:
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(&#34; PortalMerchantController&#34;,功能
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()
),则代码会正确执行并获得控制器中定义的对象。我错过了什么?
答案 0 :(得分:1)
将您的ngController
指令移到表单元素之外。
在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>