主干 -- 模型和集合是否可以有自己单独的 URL



我计划对单个模型及其集合进行单独的获取,但希望集合遵循模型的相同结构。

目前,我为每个都有单独的网址,但它在 jQuery 错误Uncaught TypeError: Cannot read property 'length' of undefined

崩溃

我应该以不同的方式执行此操作吗?代码如下:

文章模型.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;
});

文章集合.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;
});

是的,对于您的模型,您将使用:

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

然后,您将按如下方式实例化模型:

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

您的 api 将调用以下 url,然后调用"host/CoreService/GetArticle/2"

是的。您可以为模型和集合设置不同的网址。唯一需要担心的是"url"和"urlRoot"。

对于一个模型,它将是:

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

对于集合,它将是:

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

干杯

相关内容

最新更新