Tôi đã gặp phải một hành vi lạ của xác nhận mẫu trong Backbone.js.Xác thực mô hình xương sống
Khi một mô hình đầu tiên được tạo ra, như
var foo = new Foo({
bar: 42
});
Backbone gọi foo.set()
đi qua như một tham số bản đồ cho {bar: 42}
, như người ta có thể nhìn thấy từ source. Bằng cách đó, nó cũng vượt qua tùy chọn {silent: true}
, như trong dòng
this.set(attributes, {silent : true});
này có ý nghĩa, kể từ khi có silent === true
tránh kích hoạt các change
sự kiện, mà không có ý nghĩa trong bối cảnh này.
Vì một số lý do tôi không thể hiểu được, tuy nhiên, silent === true
cũng ngăn xác thực; thấy rõ nguồn gốc tại dòng
if (!options.silent && this.validate && !this._performValidation(attrs, options)) return false;
Vì vậy, nó xuất hiện mô hình là bao giờ xác nhận khi chúng được tạo ra, nhưng họ thường là khi một số thuộc tính được thay đổi. Hơn nữa, sự hiện diện của việc xác nhận là gắn bó chặt chẽ với hành động gửi các sự kiện change
, đó là một cái gì đó hoàn toàn trực giao.
Mọi người có thể giải thích lý do tại sao điều này không? Điều gì sẽ là một bằng chứng rõ ràng và trong tương lai để khắc phục vấn đề này?
tôi bằng tay có thể gọi _performValidation
, nhưng điều này có hai nhược điểm:
- đầu tiên, nó là một cái gì đó tôi chỉ đơn giản có thể quên
- thứ hai,
_performValidation
không phải là một phần của API và có thể nó sẽ thay đổi trong các bản phát hành trong tương lai.
Ok, cảm ơn bạn, tôi nghĩ rằng tôi đã thiếu một cái gì đó – Andrea
Phiên bản 0.9.9 Cập nhật: Xác thực bây giờ xảy ra ngay cả trong những thay đổi "im lặng".Thay đổi này có nghĩa là phương thức isValid đã được gỡ bỏ. Xác thực không thành công cũng kích hoạt lỗi, ngay cả khi một lỗi gọi lại được chỉ định trong các tùy chọn. – romanlv