Backbone: Wie um zu überprüfen, ob ein Modell bereits in der Sammlung?
Angesichts dieser Backbone-Sammlung
define [
'underscore',
'backbone',
'cs!models/floor'
], ( _, Backbone, Floor ) ->
return Backbone.Collection.extend
model: Floor
url: ->
return '/api/hotels/' + @hotelId + '/floors'
initialize: (models, options) ->
if ( options.hotelId )
@hotelId = options.hotelId
@.fetch()
parse: (response) ->
response.floors
alreadyExist: ->
@.filter( (floor) ->
return floor.get('number') == @.attrs.get('number')
)
hinzufügen und ein neues Modell aus einer Sicht, die weit unter, wie kann ich überprüfen, ob das Modell schon vorhanden ist in der Sammlung ?
add_floor: (e) ->
console.log ' Saving Floor '
e.preventDefault()
floorNumber = $('input[name=floorNumber]').val()
floorDescription = $('input[name=floorDescription]').val()
return new NoticeView({ message: "Please enter a Floor Number.", displayLength: 10000 }) unless floorNumber
if ! @collection.add({ number: floorNumber}).alreadyExist()
@collection.create({ number: floorNumber, description: floorDescription }, {
error: (model, response) ->
# $(e.target).removeClass('waiting');
new ErrorView({ message: "Problem saving Floor " + response.responseText, displayLength: 10000 })
success : (model, response) ->
console.log model
console.log response
new NoticeView({ message: "Floor successfully saved.", displayLength: 10000 })
})
else
new ErrorView({ message: "Floor already exist." + response.responseText, displayLength: 10000 })
- Sammlung ermöglicht es Ihnen nicht, das zu tun 🙂 es wirft einen Fehler (In jedem Fall ist nur eine geringfügige änderung in Ihre Modelle und Sie wollen, um ihn zu bestätigen, binden
add
Veranstaltung und zu validieren, da hinten) - Ich kann nicht erkennen, wie zu überprüfen, wie Sie sagen. Ich werde es tun, server-Seite. Dank Deeptechtons.
- ich komme wieder mit einem Beispiel :), so dass es würde das problem lösen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Rückgrat Sammlungen proxy der Underscore.js iteration von Funktionen, die nützlich in diesen Fällen.
Wenn Sie eine vorhandene Modell-Instanz, um zu überprüfen, ob es existiert in der Sammlung können Sie nur so etwas wie:
Wenn Sie nicht über eine vorhandene Instanz des Modells, die durch Ihr Beispiel suggeriert der Fall sein kann, können Sie die
find
oderfindWhere
Unterstrich Funktionen, zum Beispiel:Wenn
find
oderfindWhere
Gegenzug ein Modell, das könntest du leicht überprüfen, mit einemtypeof
Vergleich dann werden Sie wissen, ob das Modell in der Kollektion existiert oder nicht.findWhere
Funktion Proxy durch Rückgrat, um die Suche für ein Modell istcid
alscid
Eigenschaft ist kein model-Attribut. Um dies zu tun, würden Sie brauchen, um verwenden Sie die native Unterstrichfind
Funktion wie diesevar myModel = _.find(myCollection.models, function(model){return model.cid == "c15";});
findWhere auf eine Auflistung wird nicht Ergebnis in der JavaScript-Fehler, aber nicht ein Modell finden, das weder. Eine richtige Art und Weise zu überprüfen, ob eine Sammlung enthält ein Modell zu verwenden, Unterstrich finden, wie diese: