Trang web của tôi sẽ có nhiều phần, mỗi phần trong đó tôi có thể định lại kích thước. Để thực hiện điều này tôi đã thực hiện một "thay đổi kích thước" chỉ thị, ví dụ:Chỉ thị div có thể thay đổi góc Angular
<div class="workspace" resize="full" ng-style="resizeStyle()">
<div class="leftcol" resize="left" ng-style="resizeStyle()">
Với một chỉ thị mà trông giống như sau:
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);
});
}
};
});
Như bạn thấy, điều này chỉ thay đổi kích thước mỗi div trên cửa sổ thay đổi kích thước và mỗi chỉ thị có một phạm vi cách ly. Điều này làm việc tốt cho những gì nó được xây dựng cho, nhưng cuối cùng tôi muốn làm cho một tập hợp con của divs resizable thông qua một thanh kéo. Ví dụ
div1 div2
----------------
| || |
| || |
| || |
| || |
----------------
draggable bar in middle
Trên phong trào thanh kéo của (theo chiều ngang), tôi sẽ cần phải truy cập vào cả hai div1, div2 của chiều rộng có lẽ qua phạm vi của một bộ điều khiển cha mẹ (?). Câu hỏi của tôi là:
Đây có phải là cách "đúng" để thực hiện các div có thể thay đổi trong góc không? Đặc biệt, khi kích thước của một div ảnh hưởng đến một div khác?
Cá nhân tôi cảm thấy câu trả lời cho (1) là "Không, tôi không làm đúng vì tôi không thể giao tiếp giữa các chỉ thị khi mỗi người có phạm vi cách ly." Nếu điều này là đúng, làm cách nào tôi có thể tính cả kích thước cửa sổ và có thể kéo giữa các div?
Tôi không có câu trả lời rõ ràng cho bạn nhưng tôi sẽ kiểm tra những thứ như BootstrapUI Accordion hoặc tương tự khi có chỉ thị chính sử dụng một số chỉ thị khác và "giao tiếp" thông tin thích hợp giữa chúng để mở và đóng các phần thích hợp. Tôi tin rằng bạn sẽ sử dụng tài sản yêu cầu của đối tượng định nghĩa chỉ thị, xem phiên bản dài tại đây http://docs.angularjs.org/guide/directive – shaunhusain
Cảm ơn! Tôi nghĩ bạn có thể đúng với yêu cầu. Điều đó sẽ cho tôi quyền truy cập vào một bộ điều khiển khác ... – jayflo
Tôi vừa mới thử tính năng này. Tôi đã có một đi với jQuery-Splitter như jayflo đề nghị nhưng tôi vật lộn với điều này và cũng có ấn tượng mã không được hỗ trợ. Tôi đã thử một lần nữa bằng cách sử dụng [JQueryUI resizable] (http://plugins.jquery.com/ui.resizable/) và đó là làm việc tốt. Bước tiếp theo là tích hợp với Angular và tôi sẽ sử dụng [AngularJS-JQueryUI] (https://github.com/wlepinski/angularjs-jqueryui) – paj28