隔离范围'='没有得到分配

isolate scope '=' not getting assigned

本文关键字:分配 范围 隔离      更新时间:2024-02-07

我有以下指令:

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">

和我的correlator选项在控制器中定义:

Correlator应用程序控制器("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指令移动到表单元素之外。

在1.2.0及更高版本中,ngControllerform具有同级作用域(以前它们共享隔离作用域)。以下是导致的变化

您希望formngController的子级,这样它就可以访问它的作用域:

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

工作小提琴