开始:我没有错误,但尝试在此优化我的代码。
我有一个应用程序,在很多情况下会显示一个地址。在许多情况下,此地址应该是可编辑的。所以我创建了一个指令。
我的指示
app.directive('addressview', function(medipracticeData) {
return {
restrict: 'E',
templateUrl: 'address-view.html',
replace : true,
scope : {
address : '=',
editAddress : '&?'
},
controller : function($scope){
$scope.edit = function(){
$scope.editAddress( { address : $scope.address } );
}
}
};
});
我的指示模板(address-view.html)
<div ng-controller="AddressController as AddressCtrl">
<addressview
address="OfficeCtrl.office.address"
edit-address="AddressCtrl.showAddressEdit(address)">
</addressview>
</div>
如您所见,我在每个指令中传递AddressCtrl.showAddressEdit()
函数...这是我的地址控制器中的函数,它触发一个弹出窗口,我可以在其中编辑地址。
我的控制器
app.controller("AddressController", AddressController);
AddressController.$inject = ["$scope"];
function AddressController($scope) {
var avm = this;
avm.showAddressEdit = showAddressEdit;
function showAddressEdit(address) {
console.log(address);
}
}
我试图避免一直将此函数AddressCtrl.showAddressEdit()
传递给我的指令。是否可以在我的指令控制器中使用此功能?因此,每次我使用此指令时,它都可以使用如下:
<div ng-controller="AddressController as AddressCtrl">
<addressview
address="OfficeCtrl.office.address">
</addressview>
</div>