所以我想在我的嵌套范围内创建一个嵌套的struture,如下所示:
angular.module('myAddress').directive('myAddress', [function () {
return {
restrict: 'AE',
controller: 'myAddressController',
templateUrl: 'my-address.html',
scope: {
address: {
'form': '=addressForm',
'model': '=addressModel'
}
}
};
}]);
但是我得到一个异常,即如果删除地址嵌套,undefined不是我没有得到的函数。
如何将属性参数放在我的范围内的命名键中?
此外,如果我通过控制器定义$ scope.address它也不起作用。但首先会执行什么?范围:{'form'='addressForm'}部分在我的指令或控制器的$ scope.form中?
答案 0 :(得分:2)
使用scope
属性定义哪些$scope
变量应传递给指令scope
以及数据绑定的类型。
如果要在指令$scope
中创建嵌套结构,可以在指令controller
函数中创建它。
例如:
angular.module('myAddress').directive('myAddress', [function () {
return {
restrict: 'AE',
controller: 'myAddressController',
templateUrl: 'my-address.html',
scope: {
addressForm: '=', // Two-way databinding
addressModel: '='
},
controller: function($scope){
$scope.address = {
form: $scope.addressForm,
model: $scope.addressModel
}
},
link: function($scope,$element,$attributes){
//Your code here
}
};
}]);
您还可以在模块控制器$scope.address
中定义scope
。然后指令中的scope
属性应该如下所示
scope: {
address: '='
}
<强>更新强>
另一个问题是:您的指令是否需要专用范围?如果不是,您可以设置scope
属性false
。然后您的指令可以访问模块控制器中的$scope
变量。