Để tìm hiểu về xương sống Im, hãy tạo một ứng dụng như Twitter. Vì vậy, bạn biết rằng Twitter sẽ gửi yêu cầu GET đến máy chủ cứ sau N giây để kiểm tra các tweet mới. Nếu có các tweet mới, nó sẽ tạo ra các thành phần ẩn li và hiển thị nút có "N Tweets mới". Nếu bạn nhấp vào nó, nó sẽ hiển thị các thành phần ẩn li, hiển thị các tweet mới. Nhưng hành vi sẽ khác khi bạn thêm một tweet mới: tweet hiển thị. Bạn không cần phải bấm vào nút để xem nó.Backbone collection.create() không trả về kiểu cập nhật
Tôi đã thực hiện phần đầu tiên, cho các tweet bị ẩn. Đối với phần đăng một tweet mới và hiển thị nó direclty, tôi nghĩ rằng nó sẽ được dễ dàng để làm bằng cách tạo ra các mô hình mới, gọi collection.create() và kích hoạt các sự kiện đúng, cái gì đó như:
var newTweet = new Tweet();
newTweet.set(/* set the attributes here. Some attributes are missing, because they are calculated server side */);
var created_tweet = this.collection.create(newTweet, { silent: true, wait: true }); // I choose silent=true because the add event on my collection is in charge of adding the new hidden tweets when there are new ones on the server
this.collection.trigger("posted_new_tweet", created_tweet);
Sau đó, , bộ sưu tập của tôi được đăng ký với sự kiện "posted_new_tweet", vì vậy mỗi lần người dùng đăng một tweet mới, một phương thức cụ thể của bộ sưu tập của tôi đang được gọi. Cách tiếp cận này đã hoạt động tốt cho đến khi tôi nhận được lỗi do biến created_comment được truyền trong trình kích hoạt: nó không phải là "hoàn thành". Tôi có nghĩa là mô hình có một số thuộc tính như "id" hoặc * "created_on" * chưa được xác định. Các thuộc tính này được tính toán phía máy chủ, nhưng tôi nghĩ rằng nếu tôi vượt qua wait = true, nó sẽ chờ và cập nhật mô hình của tôi với phản hồi được cung cấp bởi máy chủ (khi yêu cầu POST được gửi đến máy chủ, nó trả về mô hình mới được tạo ra trong json)
Mô hình của tôi có phải có thuộc tính phía máy chủ không? Đó có phải là cách tiếp cận đúng cho một điều như vậy không? Trong trường hợp nó không phải là, làm thế nào tôi có thể có 2 phương pháp khác nhau để hiển thị một bộ sưu tập xem?
Cảm ơn bạn!
Đúng vậy :) Cảm ơn bạn! – fiunchinho
Tôi tin rằng trong các phiên bản sau của Backbone, các đối số bây giờ là 'nextModel' và' response'. – IanS