如何在多个指令中共享控制器?

时间:2016-03-26 05:48:11

标签: angularjs angularjs-directive

我遇到了一些问题。我有一个控制器" searchCtrl",它有一些范围对象应该在指令中使用。

如果是一个指令,它可以用作控制器:" searchCtrl"。但是多个组件需要使用由thrid方提供的searchCtrl(修改ctrl是不可取的)。

file 1;
angular.module('app.core')
    .directive('profilePage', DirectiveFunction1 );
function DirectiveFunction1 (config,service) {

    var directive = {
        restrict: 'E',
        templateUrl: 'components/search1.html',
        controller: 'searchCtrl',
        link:function (scope, element, attrs) {}

      }
        return directive;
}

file 2;
angular.module('app.core')
    .directive('contactPage', DirectiveFunction2 );
function DirectiveFunction2 (config,service) {

    var directive = {
        restrict: 'E',
        templateUrl: 'components/search2.html',
        controller: 'searchCtrl',
        link:function (scope, element, attrs) {}
      }
        return directive;
}

我的seachCtrl看起来像

angular.module('asApp').controller('searchCtrl', ['$scope', 'service', function($scope, AppService, qVarService) {

axisAPI.object()
         .app(service.app())
         .qId('abcd')
         .on('create',function(object) {
             object.paint();
         }).on('paint',function(data){
             $scope.$apply(function(){
                                    $scope.profile = data.profile;
                                    $scope.contacts = data.profile;
              })
         }).create();

所以2个组件配置文件和联系人以及一个通用控制器。根据我的功能" searchCtrl"因为我放在两个指令中,正在执行两次并获得两次响应 而不是如果它在指令html文件中使用ng-controller它将同样工作 如果没有上述内容,我如何在不同的指令中使用{{profile}}和{{contacts}}。

任何人都建议我在更好的方面做到这一点。

1 个答案:

答案 0 :(得分:0)

如果您无法控制控制器,您是否可以复制出代码并将其作为服务或工厂放置,然后重复使用?或者可能会改变?