2012-04-29 61 views
19

Tôi đang điền động <ul data-role="listview"> rồi gọi location.href="#Results" trong đó danh sách và cuối cùng là listview('refresh').Lỗi di động jQuery "không thể gọi các phương thức trên listview trước khi khởi tạo"

Tất cả được thực hiện trong lần gọi lại thành công của một yêu cầu Ajax từ cùng một trang. Nó hoạt động nhiều hơn hoặc ít hơn nhưng tôi nhận được lỗi sau:

Uncaught cannot call methods on listview prior to initialization; attempted to call method 'refresh' 

Tôi đoán jQuery mobile chưa xây dựng listview. Tôi có thể làm gì?

Trả lời

10

http://jquerymobile.com/demos/1.1.0/docs/api/events.html Bạn phải móc vào sự kiện pageinit. Bạn không thể gọi bất kỳ phương thức JQM nào trước đây. tức là:

$('#Results').bind('pageinit', function() { 
    $('#myListview').listview('refresh'); 
}); 
+3

'#results' ở đây là gì – Amit

+2

@ user1656416 #Results là id trang jQuery Mobile. Thông tin thêm tại đây: http://jquerymobile.com/demos/1.2.0/docs/pages/dialog/index.html. – HoffZ

+0

Sau khi thử những gì được đề xuất trong lỗi này, trang của tôi hiện không hiển thị. Nó được loại bỏ lỗi, nhưng trang tôi đang ràng buộc làm mới sẽ không hiển thị. – JzInqXc9Dg

14

Tôi đã gặp lỗi tương tự. Tôi đã giải quyết nó bằng cách thêm ": visible" vào truy vấn của tôi, vì vậy nó sẽ chỉ chạy nếu danh sách hiển thị.

Vì vậy, mã của bạn sẽ trông giống như thế này:

$('#myListview:visible').listview('refresh'); 

Làm việc tốt cho tôi!

+1

cảm ơn - đã tìm thấy câu trả lời của bạn trong Google, đã giải quyết được vấn đề của tôi! – Greg

+0

Bạn được hoan nghênh! Rất vui khi tôi có thể giúp :) – Ptur

+0

Đã xảy ra sự cố tương tự với vấn đề này và bạn trả lời trợ giúp! Cảm ơn – Ovi

28

bạn nên kiểm tra xem nó đã được khởi tạo hay không, làm mới danh sách trong trường hợp nó được khởi tạo bằng cách khác kích hoạt tạo ra theo những điều sau:

if ($('#myListview').hasClass('ui-listview')) { 
    $('#myListview').listview('refresh'); 
    } 
else { 
    $('#myListview').trigger('create'); 
    } 
2

sử dụng $.mobile.changePage("#Results"); thay vì location.href
thực location.href tải lại trang web để xem danh sách bị phá hủy

Và sau đó listview.refresh

+0

Đây là một ý tưởng thực sự tuyệt vời. Cảm ơn bạn Ashish. –

+0

được chào đón nhiều nhất Philip –

31

Chỉ cần gọi phương thức listview mà không cần bất kỳ Tham số đầu tiên:

$('#myListview').listview().listview('refresh'); 

Giải pháp lấy từ http://www.gajotres.net/uncaught-error-cannot-call-methods-on-prior-to-initialization-attempted-to-call-method-refresh/

+2

whoa! làm việc cho tôi sau một giờ đập đầu vào tường. – ethanpil

+1

tương tự đối với tôi: trong JQM 1.4.5, Tôi đã cố gắng tạo cửa sổ bật lên động khi nhấp vào một sự kiện trong [FullCalendar] (http://fullcalendar.io/) ... Cho những người dùng tương lai tìm thấy chủ đề này: Tôi đã sử dụng mã sau 'eventClick : function (calEvent, jsEvent, view) { \t \t \t \t \t var $ popup = $ ('

testPopup
') .appendTo ('[data-role = "content"]'); \t \t \t \t \t \t $ ('# eventPopup'). Popup(). Popup ("open"); \t \t \t \t} ' – intrixius

+1

@ethanpil và intrixius Tôi rất vui vì đã cứu được đầu bạn khỏi bị hư hại nặng. :-) –

0

chỉ cần thêm listview.refresh hoạt động tốt đối với tôi, và tôi đang sử dụng ajax để tải nội dung vào div quá.

document.getElementById("myListview").innerHTML = xmlhttp.responseText; 
//works fine on my work 
$('#myListview').listview('refresh'); 

tại đây nếu bài đăng của tôi.

jquery mobile ajax load content into a div element will lose it's css style

tôi dành gần 3 giờ để giải quyết bài của tôi probem.finaly tìm ra here.thanks câu trả lời.

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