Angularjs 控制器必须等待指令加载

Angularjs 控制器必须等待指令加载,angularjs,Angularjs,我目前正在编写一小部分AngularJS控件,我在这里遇到了一个问题。 我正在创建的控件是一个按钮(让我们从简单开始) 该指令如下所示: officeButton.directive('officeButton', function() { return { restrict: 'E', replace: false, scope: { isDefault: '@', isDisabled:

我目前正在编写一小部分AngularJS控件,我在这里遇到了一个问题。 我正在创建的控件是一个按钮(让我们从简单开始)

该指令如下所示:

officeButton.directive('officeButton', function() {
    return {
        restrict: 'E',
        replace: false,
        scope: {
            isDefault: '@',
            isDisabled: '@',
            control: '=',
            label: '@'
        },
        template: '<div class="button-wrapper" data-ng-click="onClick()">' +
                    '<a href="#" class="button normal-button">' +
                      '<span>{{label}}</span>' +
                    '</a>' +
                  '</div>',
        controller: ['$scope', function($scope) {
            // Controller code removed for clarity.
        }],

        link: function(scope, element, attributes, controller) { 
            // Link code removed for clarity.
        }
    }
});        
因此,在我的指令中,我确实有一个独立的作用域,我可以将
控件
属性传递给它。通过此属性,我可以访问方法
changelab

可以在HTML网站中使用以下指令呈现我的控件:

<office-button control="buttonController"></office-button>
我现在可以通过调用我的
范围中的以下方法来执行我的
changelab
方法

$scope.buttonController.changeLabel('Demo');
但是,这不起作用,因为此时未定义
changelab
。首先必须完全呈现按钮

有没有办法解决这个问题

编辑:添加了Plunker

我已经添加了一个示例来提供更多信息。 当在
onClick
事件中调用
changelab
方法时,一切都正常,但如果我在外部调用它,它就不正常了。这是因为$scope.api.changelab在执行时未定义(按钮尚未呈现)。因此,我基本上必须在应用程序的控制器中等待,直到按钮完全呈现


亲切的问候

请提供帮助。有几个问题立即在我脑海中浮现。您能告诉我们使用了两种不同的控制器吗?一种在指令中,另一种在OfficeWebControlsController中?您试图通过指令的控制属性实现什么?如果您在directive controller中定义了changeLabel,您将如何在其他范围内调用它?@manasisakhare正在通过API调用进行操作,但我将立即创建一个plunker,提供更多信息。@ArepalliPraveenkumar我添加了一个plunker来演示此问题。您介意再看一次吗?您可以尝试改用
$timeout
officeWebControlsApplication.controller('OfficeWebControlsController', ['$scope', function($scope) {
    $scope.buttonController = {};
}]);
$scope.buttonController.changeLabel('Demo');