2011-09-28 37 views
5

Tôi đã thừa kế một ứng dụng dựa trên đường trục js. Tôi thực sự thích xương sống và tôi chỉ bắt đầu có được đầu của tôi xung quanh nó. Từ sự hiểu biết của tôi khi model.save được gọi trên một thực thể mới, nó sẽ gửi cho máy chủ, máy chủ sẽ trả về cùng một json nhưng với một id được phân bổ và xương sống nên duy trì id đó cho mô hình để tiếp tục lưu kết quả trong một PUT với ID để cập nhật.mô hình backbone.js.save không đặt id

Tuy nhiên, khi tôi gọi model.save() và sau đó cố gắng lấy thuộc tính model.id, nó không có giá trị.

Đây có phải là vì tôi không thực hiện việc này bằng cuộc gọi lại không? Vì vậy, tài sản chưa được thiết lập?

Làm cách nào để đặt cuộc gọi thành công? gọi model.save({success: function(){...}}) không hoạt động?

đây là cuộc gọi thực tế:

model.save(null, { 
    success: function() { 
     alert('success'); 
    }, 
    error: function() { 
     alert('error'); 
    } 
}); 
+0

Bạn đã cố đặt lại gọi lại lỗi chưa? – mamoo

+0

vâng - không được gọi là – iwayneo

+0

bạn đã xác minh rằng máy chủ thực sự được gọi? – timDunham

Trả lời

4

Something cảm thấy kỳ lạ về việc này. Thiết lập silent: true chỉ làm cho nó như vậy không ai trong số các sự kiện bị sa thải. Mọi thứ khác sẽ xảy ra bình thường. Nói cách khác, đừng cho rằng thiết lập slient: true là câu trả lời đúng ở đây ...

Tôi nghi ngờ bạn thực sự ném một ngoại lệ một số địa điểm (có thể với xác nhận hoặc điều gì đó tương tự) và bằng cách nào đó, đặt silent: true đang gây ra mọi thứ chảy qua.

Tôi thực sự khuyên bạn nên xóa tùy chọn này và kiểm tra bảng điều khiển của bạn hoặc chạy bằng trình gỡ lỗi ... Tôi nghi ngờ bạn có một lỗi ẩn chứa ở đó một số địa điểm.

Một số đề xuất: Hãy xem annotated source cho chức năng model.set. Nó được gọi trước khi gọi lại success của bạn sẽ được gọi. Bên trong hàm đó, có một số điều sẽ xảy ra nếu silent là sai. Chúng bao gồm validation, kích hoạt riêng lẻ property change và kích hoạt global change. Tôi sẽ đặt cược tiền mà việc xác thực không thành công hoặc cái gì đó đang lắng nghe những thay đổi là ném một ngoại lệ.

+0

OK Tôi sẽ có một cái nhìn vào buổi sáng và báo cáo lại :) – iwayneo

+0

Vì vậy, những gì đã kết thúc được vấn đề? –

0

i cần thiết để thiết lập im lặng: true vào tiết kiệm:

model.save(null, { 
     silent: true, 
     success: function() { 
      alert('success'); 
     }, 
     error: function() { 
      alert('error'); 
     } 
    }); 
+1

Hmmmm ... Tôi nghi ngờ đây không phải là một sửa chữa ngẫu nhiên, nhưng bạn đang che đậy một lỗi trong mã của bạn bằng cách làm điều này. Hãy nhìn vào phản ứng của tôi. –

0

Tôi gặp vấn đề tương tự, hóa ra là do tùy chỉnh parse của tôi không thành công

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