Generando en las URL de mosca para modelos Backbone.js
-
27-10-2019 - |
Pregunta
Tengo un par de soluciones (más bien llamarlos hacks) para hacer esto, pero busca soluciones elegantes al problema. Aquí está el problema, por favor revise lentamente
Obtuve WebMethods
en el index.aspx
página a la que Ajax (create
,update
,delete
) Se envían solicitudes. A WebMethod único no puede manejar todo este tipo de operaciones, por lo tanto para un Person
modelo hay 3 métodos a saber
CreatePerson (attributes)
UpdatePerson (attributes)
DeletePerson(personId)
Por lo tanto, estoy usando un proceso hacky como a continuación, los nombres de funciones de JavaScript corresponden al método respectivo en el servidor
CreatePerson:function(){
model.url = "/CreatePerson";
},
UpdatePerson:function(){
model.url = "/UpdatePerson";
},
DeletePerson:function(){
model.url = "/DeletePerson";
}
Los métodos anteriores se declaran en las opiniones que representan el modelo de persona. Urlroot para el modelo es index.aspx
Por lo tanto, las llamadas de AJAX se enrutarán a Método Createperson Inside Index.aspx Cuando la operación se crea es decir index.aspx/createperson
Si delego a la función de sincronización, anulará para todos los modelos en la aplicación JS, que no quiero que suceda.
Pregunta
¿Hay alguna vez que pueda preparar la URL de acuerdo con el punto final de los modelos antes de que la solicitud AJAX se realice cuando se usa BackBone.js con Páginas ASP.NET?
Solución
Deberías sobrescribir el sync
Método de su colección si tiene uno o el modelo si está trabajando en un modelo único. Y luego, dependiendo de si se creó, actualiza o destruye el cambio de la URL en consecuencia y llame a la sincronización de la columna vertebral que pasa aún más los parámetros mientras se establece la URL correcta.
var Model = Backbone.Model.extend({
...
sync: function(method, model, options) {
// here method param can be either "read", "create", "update", "destroy"
// set your url based on its value
Backbone.sync.call(this, method, this, options);
// if your super class had custom sync as well you'd have to call
// Model.__super__.sync.call(...)
}
});
No soy un programador ASP, pero ¿no es posible tener una interfaz REST con .NET? hace las cosas mucho más fáciles :)