使用骨干模型从JSON检索特定数据

时间:2011-08-05 14:20:56

标签: javascript jquery backbone.js underscore.js

我正在创建应用程序的客户端视图,我需要帮助从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
}

我想我在某个地方犯了一个愚蠢的错误。我期待模特的发展方向吗?

2 个答案:

答案 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...
}

虽然这只是一种预感......也许我错过了你的背景但现在似乎就是这样......