Angular - 在指令

时间:2017-02-23 09:57:30

标签: javascript angularjs angularjs-directive controller

开始:我没有错误,但尝试在此优化我的代码。

我有一个应用程序,在很多情况下会显示一个地址。在许多情况下,此地址应该是可编辑的。所以我创建了一个指令。

我的指示

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>

0 个答案:

没有答案