Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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
Javascript 来自外部JSON文件的Backbone.js模型_Javascript_Jquery_Json_Backbone.js_Underscore.js - Fatal编程技术网

Javascript 来自外部JSON文件的Backbone.js模型

Javascript 来自外部JSON文件的Backbone.js模型,javascript,jquery,json,backbone.js,underscore.js,Javascript,Jquery,Json,Backbone.js,Underscore.js,我是个新手。你能给我一个提示吗?我在这里遗漏了什么 这是我的模型: var Item = Backbone.Model.extend({ url: 'json/item.json', parse: function(response){ return response.item; }, }); var item = new Item(); item.fetch(); 在控制台中,“item.toJSON();”将结果显示为预期的-id、title等,但当项通过视图传递

我是个新手。你能给我一个提示吗?我在这里遗漏了什么

这是我的模型:

var Item = Backbone.Model.extend({

  url: 'json/item.json',

  parse: function(response){
    return response.item;
  },
});

var item = new Item();
item.fetch();
在控制台中,“item.toJSON();”将结果显示为预期的-id、title等,但当项通过视图传递到模板时

...
this.$el.append( template( item.toJSON() ) );
...
它不能选择任何属性-例如item.title->undefined

json文件如下所示:

{
"item":{
    "title": "something something",
     .....
     }
}
当你打电话时:

var item = new Item();
item.fetch();
此代码可能不同步,对吗

因此,当您立即尝试渲染时,提取尚未完成

您可以在控制台中看到该对象,因为它已填充

您的获取可能应该接受回调或返回承诺,以便在获取完成时让您知道

var item = new Item();
item.fetch().then(function(fetchedItem){
  console.log(item === fetchedItem) // true
  this.$el.append( template( item.toJSON() ) );
}.bind(this));

您必须显示您的视图定义,但我的意思是视图工作正常,我想它与获取有关?因为如果我在控制台中添加:var newItem=item.toJSON():我将得到一个空对象:newItem object{},但是从控制台“item.toJSON();”再次显示了完整的对象。你最好附加完整的视图代码,但我想问题可能是由这一行中的错误引起的:
this.$el.append(模板(item.toJSON());
尝试使用
this.$el.append(u.template(template_html,item.toJSON());
@Evgeniy自下划线1.7.0以来,下划线模板不再接受初始数据对象。
.template
现在总是返回函数。请参阅@DefectlessVictory可能与