隔离范围'='未被分配

时间:2013-12-03 16:47:34

标签: javascript angularjs angularjs-directive angularjs-scope

我有以下指令:

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()),则代码会正确执行并获得控制器中定义的对象。我错过了什么?

1 个答案:

答案 0 :(得分:1)

将您的ngController指令移到表单元素之外。

在1.2.0及更高版本中,ngControllerform具有兄弟范围(之前他们将共享隔离范围)。 Here's the change that causes this

您希望form成为ngController的孩子,以便它可以访问它的范围:

<div ng-controller="PortalMerchantController">
   <form correlator cr-options="correlatorOptions" name="CorrelatorForm"></form>

working fiddle