2012-06-02 12 views
15

Tôi đang gặp một số sự cố với kho lưu trữ dữ liệu Sencha Touch và một localproxy. Về cơ bản, khi một bản ghi được lấy ra khỏi cửa hàng, sử dụng phương thức store.remove (record), bản ghi sẽ bị xóa khỏi bộ nhớ, nhưng tham chiếu Id tới nó trong cửa hàng sẽ không bị xóa, vì vậy khi trang được làm mới, tôi nhận được một "lỗi chưa gặp: không thể đọc thuộc 'isModel' không xác định" lovelySencha Chạm vào localstore proxy không xóa chỉ mục sau khi đã xóa các bản ghi

đây là mã cho cửa hàng:

Ext.define("App.store.Data", { 
    extend: "Ext.data.Store", 
    requires: "Ext.data.proxy.LocalStorage", 
    config: { 
     model: "App.model.Data", 
     autoSync: true, 
     proxy: { 
      type: 'localstorage', 
      id: 'app-store' 
     } 
    } 
}); 

đây là mã cho nút xóa trên trang biên tập dữ liệu

onDeleteHomeworkCommand: function() { 

    var dataEditor = this.getDataEditor(); 
    var currentData = dataEditor.getRecord(); 
    var dataStore = Ext.getStore("Data"); 

    dataStore.remove(currentData); 
    dataStore.sync(); 

    this.activateDataList(); 
}, 

Chỉnh sửa:

Đây là một ảnh chụp màn hình của cửa hàng dữ liệu trước khi phương pháp loại bỏ được gọi là: enter image description here

Và đây là một trong những sau: enter image description here

Note Id vẫn nằm trong danh sách của cửa hàng, mang đến cho cho tôi lỗi không xác định khi trang được làm mới.

+0

Đây là ảnh chụp màn hình của kho dữ liệu trước khi phương thức xóa được gọi: http://i.imgur.com/HmOtT.png Và sau đây là một cái sau: http://i.imgur.com/ VEmeq.png Lưu ý rằng Id vẫn nằm trong danh sách của cửa hàng, điều này mang lại cho tôi lỗi không xác định khi trang được làm mới –

+0

bạn đã bao giờ tìm thấy giải pháp cho điều này chưa? – Daniel

+0

bạn có thể vui lòng cung cấp cấu trúc cho mô hình của bạn –

Trả lời

5

Vấn đề là proxy cửa hàng địa phương không loại bỏ ID từ danh sách ID nội bộ của nó khi bạn xóa bản ghi. Bạn có thể giải quyết điều này nếu bạn phá hủy một cách rõ ràng bản ghi trong proxy bằng cách hủy().

1

đây là loại một vấn đề được biết đến với localstorage proxy và stores trong sencha touch và xảy ra vì bởi defualt sencha lấy id là int và do đó vấn đề nảy sinh khi họ không. tôi phát hiện ra một giải pháp cho vấn đề này ở một trong các diễn đàn sencha và nó làm việc cho tôi
đây là liên kết đến chủ đề đó http://www.sencha.com/forum/showthread.php?151741-remove-record-from-localstorage
và giải pháp là chỉnh sửa một dòng mã nguồn sencha touch và tại đây mà đi

Và bây giờ tôi đã khắc phục sự cố với các id không được dọn dẹp.

Có một sử dụng getId mà trả về một Int nhưng danh sách các id là một mảng của chuỗi

//This line doesn't work circa 32196 
Ext.Array.remove(newIds, records[i].getId()); 

//Replace it with this one works fine. 
Ext.Array.remove(ids, records[i].getId().toString()); 

này có thể là bởi vì mô hình của tôi sử dụng 'id' loại 'int', bởi vì đó là những gì Tôi nghĩ rằng các tài liệu cho thấy nhưng tôi có thể sai .. Có một cái nhìn