Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 主干网:Can';t访问';此.model.*';鉴于_Backbone.js - Fatal编程技术网

Backbone.js 主干网:Can';t访问';此.model.*';鉴于

Backbone.js 主干网:Can';t访问';此.model.*';鉴于,backbone.js,Backbone.js,我对脊梁骨还不熟悉,正在努力解决一个基本问题。我设置了一条路线,以接收一个参数,使用它定位模型(此时硬编码),并在视图中渲染模型数据 使用“project1”参数,在视图的渲染函数中,我可以访问this.model和project1.attributes和project1.get('name'),但我无法访问this.model.attributes或this.model.get('name')或使用this.model.toJSON()。(注意:尝试访问后一个应用程序会导致应用程序爆炸。) 这

我对脊梁骨还不熟悉,正在努力解决一个基本问题。我设置了一条路线,以接收一个参数,使用它定位模型(此时硬编码),并在视图中渲染模型数据

使用“project1”参数,在视图的渲染函数中,我可以访问
this.model
project1.attributes
project1.get('name')
,但我无法访问
this.model.attributes
this.model.get('name')
或使用
this.model.toJSON()
。(注意:尝试访问后一个应用程序会导致应用程序爆炸。)

这是一个“这个”绑定问题吗?感谢您的帮助

var Router = Backbone.Router.extend({
  routes: {
    "work/:project" : "project"
  },
  project: function (project) {
    $('#content').html(new ProjectView({model:project}).render().el);
  }
});

var ProjectView = Backbone.View.extend({
  id: "project",
  render: function () {
    $(this.el).html(this.template(this.model.toJSON()));
    return this;
  }
});

var Project = Backbone.Model.extend({});

var project1 = new Project({ 
  name: "Project1", 
  description : "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
});

正如注释已经提到的,您的基本问题是向视图传递一个字符串,但该视图需要一个模型。这一行:

$('#content').html(new ProjectView({model:project}).render().el);
问题是:
project
需要是
Backbone.Model
的实例,但它不是。这条线应该是这样的:

var project1 = new Project({ 
    name: "Project1", 
    description : "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
});
$('#content').html(new ProjectView({model: project1}).render().el);

正如注释已经提到的,您的基本问题是向视图传递一个字符串,但该视图需要一个模型。这一行:

$('#content').html(new ProjectView({model:project}).render().el);
问题是:
project
需要是
Backbone.Model
的实例,但它不是。这条线应该是这样的:

var project1 = new Project({ 
    name: "Project1", 
    description : "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
});
$('#content').html(new ProjectView({model: project1}).render().el);


为什么要将
project
作为
ProjectView
的模型传递?这是一个路由参数,不是实际的主干网模型。该参数也是模型的名称。我的想法是,当用户访问“/work/project1”时,参数“project1”作为模型名传递给
ProjectView
,然后该模型(见我代码底部)被访问并显示在视图中。这没有意义吗?我认为实际的模型必须传递给视图,而不是一些与模型同名的
param
。您能否尝试
newprojectview({model:project1})
?这就是我所说的传递模型本身的意思。您传递的是字符串,而不是模型。为什么要将
project
作为
ProjectView
的模型传递?这是一个路由参数,不是实际的主干网模型。该参数也是模型的名称。我的想法是,当用户访问“/work/project1”时,参数“project1”作为模型名传递给
ProjectView
,然后该模型(见我代码底部)被访问并显示在视图中。这没有意义吗?我认为实际的模型必须传递给视图,而不是一些与模型同名的
param
。您能否尝试
newprojectview({model:project1})
?这就是我所说的传递模型本身的意思。你传递的是字符串,不是模型。谢谢你的回复。如果我按照您的建议修改代码,将新模型创建移动到
项目:函数中,并传递新模型名称“project1”而不是route参数,则我的路由失败(找不到URL)。无法确定,但听起来好像我(我指的是所有的注释者)解决了您最初的bug,现在问题解决了,您的代码遇到了一个新问题。我们需要看到这个问题的更多细节,但我建议为他们启动一个新的SO线程:否则这个线程将基本上有两个问题,你的原始和新的,加上一个超长的评论线程,以及可能适用于你的一个或两个问题的答案(所以做两个单独的帖子会更干净)。万一这两个问题不清楚,我的意思是你最初的问题是“为什么我不能访问这个.model”,答案是
this.model
是字符串而不是模型,这就是为什么你不能访问它。询问任何其他主题(例如,“为什么我会遇到与我为模型传递字符串无关的路由错误”)都会搞乱这个线程的内容(并且启动一个新线程需要10秒钟)。这很公平。再次感谢,谢谢你的回复。如果我按照您的建议修改代码,将新模型创建移动到
项目:函数中,并传递新模型名称“project1”而不是route参数,则我的路由失败(找不到URL)。无法确定,但听起来好像我(我指的是所有的注释者)解决了您最初的bug,现在问题解决了,您的代码遇到了一个新问题。我们需要看到这个问题的更多细节,但我建议为他们启动一个新的SO线程:否则这个线程将基本上有两个问题,你的原始和新的,加上一个超长的评论线程,以及可能适用于你的一个或两个问题的答案(所以做两个单独的帖子会更干净)。万一这两个问题不清楚,我的意思是你最初的问题是“为什么我不能访问这个.model”,答案是
this.model
是字符串而不是模型,这就是为什么你不能访问它。询问任何其他主题(例如,“为什么我会遇到与我为模型传递字符串无关的路由错误”)都会搞乱这个线程的内容(并且启动一个新线程需要10秒钟)。这很公平。再次感谢。