在我的控制器中,我将一个名为“url”的参数传递给视图。这已成功传递到初始化函数中。接下来,当我创建模型时,我想将相同的参数传递到模型中以用作 rooturl。

以下是我尝试过的方法,但收到以下错误消息:

A "url" property or function must be specified 

这似乎参数没有传递到模型(未定义)或者我没有在模型中正确调用它。 我在这里做错了什么?

笔记: 初始化函数视图中的 console.log(options.url) 确认参数已成功从控制器传递到视图,问题是从视图到模型的未定义。

控制器:

var myview = new NewView({
           url:"api/"
       })**

看法:

  var myview = Backbone.Marionette.ItemView.extend({

        initialize: function (options) {
            this.url = options.url;
            this.model.fetch();
        },


    model: new myModel({
            url: this.url
        }),

我的型号:

var myModel = Backbone.Model.extend({
  urlRoot: function(){ return this.get('url') }

});
有帮助吗?

解决方案

您正在尝试使用空网址获取模型。

你打电话时:

initialize: function (options) {
  this.url = options.url;
  this.model.fetch();
}

fetch 在这里,您没有模型的网址。所以,你可以这样做:

initialize: function (options) {
  this.url = options.url;
  this.model.set({url: this.url});
  this.model.fetch();
}

其他提示

写入

model: new myModel({
        url: this.url
    }),
.

视图尚未初始化

您可以在视图的初始化方法中实例化模型

initialize: function (options) {
        this.url = options.url;
        this.model = new myModel({
            url: this.url
        })
        this.model.fetch();
    },
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top