backbone de passagem de parâmetros para um modelo de url
-
20-12-2019 - |
Pergunta
No meu controlador estou passando um parâmetro chamado 'url' para um modo de exibição.Este é transmitido com sucesso para a função de inicialização.Seguinte, quando eu criar o meu modelo eu gostaria de passar o mesmo parâmetro para o modelo para usar como rooturl.
Abaixo está o que eu tentei mas eu tenho a seguinte mensagem de erro:
A "url" property or function must be specified
Este parece ser o parâmetro não está sendo passado para o modelo (indefinido) ou eu não estou chamando-o corretamente no modelo. O que estou eu fazendo de errado aqui?
Nota: console.log(opções.url) na função de inicialização vista confirma o parâmetro é passado com êxito a partir do controlador para o modo de exibição, as questões da vista para o modelo onde é indefinido.
Controlador:
var myview = new NewView({
url:"api/"
})**
Visão:
var myview = Backbone.Marionette.ItemView.extend({
initialize: function (options) {
this.url = options.url;
this.model.fetch();
},
model: new myModel({
url: this.url
}),
myModel:
var myModel = Backbone.Model.extend({
urlRoot: function(){ return this.get('url') }
});
Solução
Você está tentando buscar o seu modelo com um vazio url.
Quando você chamar:
initialize: function (options) {
this.url = options.url;
this.model.fetch();
}
fetch
aqui, você não tem a url do modelo.Então, o que você poderia fazer:
initialize: function (options) {
this.url = options.url;
this.model.set({url: this.url});
this.model.fetch();
}
Outras dicas
Ao escrever
model: new myModel({
url: this.url
}),
o modo de exibição ainda não está inicializado
Você pode instanciar o modelo na vista do método de inicialização
initialize: function (options) {
this.url = options.url;
this.model = new myModel({
url: this.url
})
this.model.fetch();
},