2013-06-04 14 views
5

Tôi đang lưu trữ thuộc tính dữ liệu sau cho các phần tử được chọn để tải các tùy chọn.Việc lưu trữ JSON trong dữ liệu có được khuyến nghị đối với các thuộc tính dữ liệu riêng biệt không?

<select name="DependsOn_Field" data-load='automatic' data-source='web.module().fields' data-value='name' data-display='label' data-filter='exclude_single' id='DependantField'></select> 

Câu hỏi của tôi là cách tốt nhất khi cần lưu trữ nhiều thuộc tính dữ liệu cho một phần tử DOM duy nhất là gì? Tốt hơn là nên có thuộc tính dữ liệu đơn lẻ có dữ liệu JSON hoặc có thuộc tính dữ liệu riêng biệt cho mỗi giá trị cần thiết.

+0

Thuộc tính dữ liệu riêng lẻ có thể duy trì được nhiều hơn, nếu bạn lưu trữ JSON bên trong trường dữ liệu, bạn sẽ vẫn cần phải phân tích cú pháp JSON. – itsmejodie

+0

Tôi đoán các thuộc tính sẽ dễ đọc hơn, nhưng JSON sẽ là một cách hợp lý hơn để lưu trữ nhiều dữ liệu. Các thuộc tính cũng dễ tiếp cận hơn trong khi JSON cần được chuyển đổi thành một đối tượng để đọc và quay lại một chuỗi nếu các thay đổi được thực hiện. Lý tưởng nhất là bạn sẽ có các đối tượng JavaScript giữ dữ liệu và được liên kết với một nút, tránh vấn đề này hoàn toàn. – Marty

+1

Nếu JSON không phải là giá trị mong muốn, tôi sẽ không bao giờ sử dụng nó chỉ để "đóng gói" nhiều thuộc tính. Nó chỉ đơn giản là không phải là những gì nó được cho. – acdcjunior

Trả lời

2

Tôi nghĩ rằng câu hỏi sẽ được xem là thuộc tính dữ liệu tĩnh? Họ có thể sẽ thay đổi không? Nếu họ sẽ thay đổi hoặc bạn có thể muốn chỉnh sửa chúng, thì JSON chắc chắn là tốt hơn. Tuy nhiên, nếu chúng tĩnh và bạn sẽ chỉ đọc các thuộc tính đó, tôi nghĩ thuộc tính data là tốt, đây chính xác là thuộc tính data. Tôi biết nó có vẻ cồng kềnh bởi vì bạn có một loạt các thuộc tính nhưng tôi nghĩ nó ổn.

EDIT bằng cách thay đổi hoặc chỉnh sửa, tôi muốn chỉnh sửa động trong trình duyệt của khách hàng.

Hy vọng điều này sẽ hữu ích.

1

Điều đó hoàn toàn phụ thuộc vào cách chúng được sử dụng.

Nếu giá trị của bạn là các chuỗi đơn giản và bạn đang truy cập chúng từ JavaScript, thì có thể có ý nghĩa khi giữ chúng ở các thuộc tính data-.

Nếu giá trị của bạn đối tượng JSON phức tạp, sau đó nó có thể làm cho ý nghĩa hơn để lưu trữ các giá trị JSON hoàn toàn trong một thuộc tính data-, và xác định một helper mà sẽ đọc nó (giả sử vì đơn giản rằng jQuery có sẵn):

function getElemData(elem) { 
    var $elem = $(elem); 
    var elemData = $elem.data("_jsonData"); 
    if (!elemData) { 
     elemData = JSON.parse($elem.attr("data-json-data")); 
     $elem.data("_jsonData", elemData); 
    } 
    return elemData; 
} 

Và cuối cùng, nếu dữ liệu chỉ được truyền xung quanh (ví dụ, được viết bởi máy chủ, sau đó đọc và gửi trực tiếp trên một nơi khác), có nhiều khả năng giữ toàn bộ đốm màu trong một thuộc tính data-.

+0

Cảm ơn bạn đã trả lời. Một sửa chữa là jQuery kiểm tra giá trị trong thuộc tính data và phân tích cú pháp nó nếu nó bắt đầu bằng {. – Nishanthan

+0

Ug, phải - Tôi đã quên hành vi abhorrent của '$ .data'. Ug. Có - vì phép phân tích cú pháp đó, sử dụng '$ .data' để truy cập các thuộc tính' data-'hoàn toàn không bao giờ được sử dụng, do đó cần có hàm trợ giúp. Trong trường hợp này, tên thuộc tính hoặc dữ liệu phải được thay đổi (mà tôi đã thực hiện). –

Các vấn đề liên quan