Jest to nieco wymyślny przykład, ale uważam, że ma to znaczenie.Backbone.js - Jak utworzyć kolekcję, która ma właściwości bindable
Powiedzmy, że mam kolekcję samochodów szkieletowych. A do kolekcji potrzebuję właściwości o nazwie isValid. Chcę, aby inne obiekty były w stanie powiązać z isValid i uruchomić funkcję, gdy zmieni się wartość isValid. Kolekcja właściwości właściwośćValid zostanie zmieniona na podstawie modeli w kolekcji jako całości.
Na przykład, jeśli wszystkie drzwi są zablokowane w każdym samochodzie, wartość isValid powinna zmienić się na true. Gdy wartość isValid ulegnie zmianie, wszystkie funkcje, które są powiązane ze zdarzeniem Zmiana wielkości, powinny zostać uruchomione.
Moje pytanie brzmi: jak utworzyć kolekcję, która ma właściwości wiążące, która działa podobnie do właściwości modelu?
To jest kod, który chciałbym dostać do pracy.
var Car = Backbone.Model.extend({});
var Cars = Backbone.Collection.extend({
model: Car,
url: "Cars",
isValid: false, //Here's the property that I want bindable
//but do not know how to accomplish this.
});
var cars = new Cars();
//Call a function when cars.isValid changes
cars.bind("change:isValid", carsIsValidChanged, cars)
//Not sure if this what the function would look like
//but would need access to cars.isValid or just the car collection
function carsIsValidChanged(isValid){
console.log(isValid);
}
Aktualizacja
Zobacz moje kompletne rozwiązanie jako odpowiedź poniżej.
Dzięki za odpowiedź. Wierzę, że wskazałeś mi właściwy kierunek. Doceń informację, że wartośćValid powinna zostać utworzona podczas inicjowania. Kiedy skończę z moim rozwiązaniem roboczym, opublikuję to. –