Javascript 主干模型按ID获取JSON元素

Javascript 主干模型按ID获取JSON元素,javascript,json,backbone.js,Javascript,Json,Backbone.js,我第一次使用主干网,我真的很难让它与JSON数据文件一起正常工作 我有一个这样的模型: window.Test = Backbone.Model.extend({ defaults: { id: null, name: null, }, url: function() { return 'json/test.json/this.id'; }, initialize: function(){ } }); 当一个测试项被单击时,我会尝试通过执行以下操作来

我第一次使用主干网,我真的很难让它与JSON数据文件一起正常工作

我有一个这样的模型:

window.Test = Backbone.Model.extend({

defaults: {  
    id: null,
    name: null,
},

url: function() {
    return 'json/test.json/this.id';
  },

initialize: function(){  

}
});
当一个测试项被单击时,我会尝试通过执行以下操作来显示被单击的太平洋模型的详细信息

testDetails: function (id) {


    var test = new Test();
    test.id = id;
    test.fetch({ success: function(data) { alert(JSON.stringify(data))}});
},
但是,这不起作用,我无法正确地说“使用传递的ID获取JSON元素”

任何人都可以告诉我如何正确构造模型URL以提取ID为的元素


谢谢

您的url不正确。您正在返回文本字符串“this.id”。你可能想做一些更多的事情

url: function () {
    return 'json/test.json/' + this.id;
}

我将首先修复您的
url
函数:

url: function() {
    return 'json/test.json/' + this.get('id');
}

现在的方式是,无论模型的
id
,每个获取请求都将
/json/test.json/test.id

这里的问题是,您将json数据文件视为对服务器的调用。这是行不通的,这也是你得到404的原因。如果要在本地访问文件,必须先加载该文件。您可以使用.getJSON()方法通过jQuery实现这一点,或者如果文件是静态的,只需使用脚本块将其加载到内存中(尽管您可能需要在文件中指定一个var)。很可能,您将使用jQuery。这方面的一个例子如下:


如果这是一个JSON数组,您可以将该数组加载到一个集合中,并使用“at”方法按id访问特定元素。如果它完全是JSON,则必须创建一个自定义解析器

在主干中,使用
.get()
方法访问模型属性
this.id
将返回
undefined
嗨,谢谢,我现在已经更改了它,但是我收到了错误get 404(未找到),我如何告诉它获取带有id的JSON元素given@jackwanders当从模型本身中引用this.id时,它可以正常工作。不过,您是正确的,从模型之外使用get是正确的。您好,谢谢,我现在已经更改了它,但是我收到了错误get localhost/backbone/json/test.json/2 404(未找到)。在这种情况下,很可能是服务器上的路由问题,或者您的
url
仍然不正确。如果不了解更多有关后端设置的信息,我无法提供更多帮助