私のサイトには複数のセクションがあり、それぞれのサイズを変更できるようにします。これを達成するために、「サイズ変更可能な」ディレクティブを作成しました。
<div class="workspace" resize="full" ng-style="resizeStyle()">
<div class="leftcol" resize="left" ng-style="resizeStyle()">
次のようなディレクティブを使用します。
lwpApp.directive('resize', function ($window) {
return {
scope: {},
link: function (scope, element, attrs) {
scope.getWinDim = function () {
return {
'height': window.height(),
'width': window.width()
};
};
// Get window dimensions when they change and return new element dimensions
// based on attribute
scope.$watch(scope.getWinDim, function (newValue, oldValue) {
scope.resizeStyle = function () {
switch (attrs.resize) {
case 'full':
return {
'height': newValue.height,
'width': (newValue.width - dashboardwidth)
};
case 'left':
return {
'height': newValue.height,
'width': (newValue.width - dashboardwidth - rightcolwidth)
};
etc...
};
}, true);
//apply size change on window resize
window.bind('resize', function () {
scope.$apply(scope.resizeStyle);
});
}
};
});
ご覧のとおり、これはウィンドウのサイズ変更時に各 div のみをサイズ変更し、各ディレクティブには分離スコープがあります。これは、それが構築されたものに対してはうまく機能しますが、最終的には、ドラッグ可能なバーを介してサイズ変更可能な div のサブセットを作成したいと考えています。例えば
div1 div2
----------------
| || |
| || |
| || |
| || |
----------------
draggable bar in middle
ドラッグ可能なバーの動き (水平方向) では、おそらく親コントローラー (?) のスコープを介して、div1 と div2 の両方の幅にアクセスする必要があります。私の質問は次のとおりです。
これは、サイズ変更可能なdivを角度で作成するための「正しい」方法ですか? 特に、ある div のサイズが別の div に影響する場合は?
個人的には、(1) に対する答えは「いいえ、正しく実行していません。それぞれに分離スコープがあると、ディレクティブ間で通信できないからです」という感じです。これが本当なら、div 間のウィンドウとドラッグ可能なサイズ変更の両方をどのように説明できますか?