我正在创建应用程序的客户端视图,我需要帮助从JSON文件中检索特定数据。我正在使用Backbone.js和Underscore.js来实现这一目标。
(function($) {
window.Node = Backbone.Model.extend({
getName: function(){
return this.get('Name');
}
});
window.Nodes = Backbone.Collection.extend({
model:Node,
url: '/packageview.json'
});
window.NodeView = Backbone.View.extend({
tagName: "div",
className: "package-template",
events:{
"click #display-name" : "displayname",
},
//.. I have a render and initialize function here which should not be a concern
displayname: function(){
var node = new Node();
alert(node.getName()); //trying to alert
},
});
});
我正在尝试从模型中获取名称并提醒它。我的html中有一个带有id的按钮,当我按下该按钮时,我将“未定义”作为警报。以下是我的JSON文件的外观:
{
"Id": 2,
"Name": "Some Package",
"IsComplete": false,
"IsNodeTagComplete": false
}
我想我在某个地方犯了一个愚蠢的错误。我期待模特的发展方向吗?
答案 0 :(得分:1)
我在这里做的是这个
window.jsonAccess = Node.extend({ // Here Node is my above mentioned model
getJSON: function(){
var collection = nodeInstance.toJSON(); // nodeInstance is an instance of my collection Nodes
return collection; //returns JSON
}
});
jAccess = new jsonAccess();
所以这就是我正在做的访问JSON
getNodeId: function(){ //Function to get Node Id from JSON
objectJSON = jAccess.getJSON(); // Get JSON
_.each(objectJSON, function(action){
_.each(action.Nodes, function(action){
这解决了我的目的,但并不完全是在骨干中使用吸气剂的方式。
答案 1 :(得分:0)
由于缺少大量上下文,我也可能犯了一个错误,但这是我的猜测 - 你正在创建一个空节点模型。尝试在显示中执行以下操作:
displayName: function() {
var myJSON = window.getJSONObject(); //wherever your json object is or how to get it...
var node = new Node({
id:myJSON.Id,
name:myJSON.Name,
isComplete: myJSON.IsComplete,
...
});
alert(node.get('name'));
alert("Getter: "+node.getName()); //your version...
}
虽然这只是一种预感......也许我错过了你的背景但现在似乎就是这样......