2015-12-03 63 views
0

我是AngularJS的新手。我想爲兩個指令使用一個模板。在交易中,第一條指令覆蓋第二條指令的行爲。但是我爲他們每個人指定了不同的控制器。我認爲原因是控制器將範圍隔離開來。我需要第一個控制器執行自己的filterChanged()函數,第二個控制器也執行它。與字段相同:蒙太奇,付費,取消和不活動。我嘗試操作範圍(true,'isolate',false,{}),transclude(true,false,'element'),範圍字段('@','=','&')。 'controllerAs'和'controllerBindTo'不適合我的任務,因爲我想這會拋出單獨的控制器文件。兩個指令,各自的控制器和相同的模板對UIU

幫我看看。手落下。

源代碼如下。

filter.html

<div class="filter"> 
<p class="text-center"><b ng-bind="::title"></b></p> 
<div class="contact-item-requires-filter"> 
    <div class="contact-item-require"> 
     <input id="contact-item-montage-filter" class="contact-item-require-montage" type="checkbox" 
      ng-model="filter.montage" 
      ng-change="filterChanged()"> 
     <label title="Монтажи" for="contact-item-montage-filter"></label> 
    </div> 
</div> 

directive1.js

angular.module('qualityControl') 
.directive('requiresFilterDirective', function() { 
    return { 
     templateUrl: '../templates/pages/quality/filter.html', 
     controller: 'requiresFilterController' 
    } 
}); 

directive2.js

angular.module('qualityControl') 
.directive('usersFilterDirective', function() { 
    return { 
     templateUrl: '../templates/pages/quality/filter.html', 
     controller: 'usersFilterController' 
    } 
}); 

更新。

+0

您的指令都對指令使用相同的控制器和相同的名稱。我不明白你想達到什麼,但我可能會從那裏開始。 – jpgrassi

+1

Монтажи! Огонь!!! :) –

+0

更正了directive2.js –

回答

0

添加有 '&' 變量,這是函數聲明

.directive('requiresFilterDirective', function() { 
     return { 
      restrict: 'AE', 
      scope: { 
       functionToCall: '&', 
       someData: '=' 
      }, 
      templateUrl: '../templates/pages/quality/filter.html', 
      link: function (scope, elem, attrs) { 
       scope.functionToCall(); 
       console.log('scope.someData', scope.someData); 
      } 
     } 
    }) 

用法:

<requires-filter-directive function-to-call="myFunctOne()" some-data="yourJsonObject"></requires-filter-directive> 

<requires-filter-directive function-to-call="myFunctTwo()" some-data="yourJsonObject"></requires-filter-directive> 

而在你的主控制器聲明這些功能:

$scope.myFunctOne = function() { 
    alert("111") 
}; 

$scope.myFunctTwo = function() { 
    alert("222") 
}; 

$scope.yourJsonObject = {'aaa':123}; 
+0

沒有幫助我。 –

相關問題