![](/img/trans.png)
[英]AngularJS : Isolating scope in a directive with transclude set to true
[英]KendoUI not working in AngularJS directive with transclude = true
在此示例中,我有兩個AngularJS KendoDatePickers。 如果單擊按鈕,打開日歷,第一個效果很好。 第二個指令位於將transclude
屬性設置為true
的指令中。 如果單擊第二個按鈕,則會出現錯誤。
我的理解是,被包含部分的范圍是繼承自控制范圍的,因此這應該可以工作。 我哪里錯了?
HTML
<input kendo-date-picker="picker" />
<button ng-click="openPicker()">Open Date Picker</button>
<my-window>
<input kendo-date-picker="picker2" />
<button ng-click="openPicker2()">Open Date Picker 2</button>
</my-window>
使用Javascript
var app = angular.module("app", [ "kendo.directives" ]);
app.controller('MyCtrl', function($scope) {
$scope.openPicker = function () {
$scope.picker.open();
};
$scope.openPicker2 = function () {
$scope.picker2.open();
};
});
app.directive('myWindow', function() {
return {
transclude: true,
scope: {
someVar: '='
},
restrict: 'EA',
template: function(element, attrs) {
var html = '<div ng-transclude></div>';
return html;
}
};
});
您的代碼有兩件事:
第一:您創建了isolatedScope,因此您無權訪問指令范圍內的控制器范圍。
第二:被排除的內容獲得了自己的范圍。 解決此問題的一種方法是完全不使用transclude,如以下示例所示:
return {
transclude: false,
restrict: 'EA',
template: function(element, attrs) {
var html = '<div>'+element.html()+'</div>';
return html;
}
或使用鏈接功能,並在指令范圍內手動包含元素
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.