2012-12-05 38 views
1

我打算對單個模型及其集合進行單獨提取,但希望集合遵循模型的相同結構。骨幹 - 模型和集合可以擁有自己獨立的url嗎?

目前,我對每個單獨的網址,但其對一個jQuery錯誤Uncaught TypeError: Cannot read property 'length' of undefined

撞毀我應該做這個不同的方式?代碼如下:

ArticleModel.js

define([ 
    'underscore', 
    'backbone', 
], function(_, Backbone) { 

    var ArticleModel = Backbone.Model.extend({ 
     defaults: {}, 

     url : function() { 
      return baseAPIUrl + '/CoreService/GetArticle'; 
     }, 

     parse : function(data) { 
      console.log(data); 

      var articleArray = []; 

      $.each(data.Articles, function(i, item) { 
       if (isNotEmpty(item.ScaledImages)) { 
        var Image = item.ScaledImages.ImageUrls[4].Value; 
       } 

       articleArray = { 
        Id : item.Id, 
        Title : item.Title, 
        FeedTitle : item.FeedTitle, 
        Summary : item.Summary, 
        ImageUrl : Image, 
        Link: item.Link 
       }; 
      }); 
      return articleArray; 
     } 
    }); 

    return ArticleModel; 

}); 

ArticlesCollection.js

define([ 
    'underscore', 
    'backbone', 
    'models/article/ArticleModel' 
], function(_, Backbone, ArticleModel){ 

    var ArticlesCollection = Backbone.Collection.extend({ 

     model: ArticleModel, 

     initialize : function(articles, options) { 

     }, 

     url : function() { 
     return baseAPIUrl + '/CoreService/GetFollowedMembersArticles'; 
     }, 

     parse : function(data) {   
     var articleArray = []; 

     $.each(data.Articles, function(i, item) {   
      if (item.ScaledImages != null) { 
       var image = item.ScaledImages.ImageUrls[4].Value; 
      } 

      articleArray.push({ 
       Id : item.Id, 
       Title : item.Title, 
       FeedTitle : item.FeedTitle, 
       Summary : item.Summary, 
       ImageUrl : image, 
       Link: item.Link 
      }); 
     }); 

     return articleArray; 
     }  

    }); 

    return ArticlesCollection; 

}); 

回答

2

是的,你的模型,你可以使用:

var Model = Backbone.Model.extend({ 
    idAttribute: "Id", 
    urlRoot: function() { 
     return baseAPIUrl + '/CoreService/GetArticle'; 
    } 
}); 

你會然後實例化你的像模型如下:

var model = new Model({Id: 2}); 
model.fetch(); 

您的API將調用下面的網址,然後'主機/ CoreService/GetArticle/2'

1

是。您可以爲&集合提供不同的網址。唯一擔心的是「url」和「urlRoot」。

對於模型將是:

var User = Backbone.Model.extend({ 
    urlRoot:'/saveuser.php' 
}); 

對於集合這將是:

var Users = Backbone.Collection.extend({ 
    url:'/saveuser.php' 
}); 

乾杯