首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态更改主干模型

动态更改主干模型
EN

Stack Overflow用户
提问于 2014-11-03 04:55:58
回答 1查看 138关注 0票数 0

这里是我的问题,我想动态地改变我的模型(当集合被实例化时,动态地改变我的模型中的一个变量)。

下面是我的代码:

代码语言:javascript
复制
define(['backbone'], function (backbone) {

  var MyModel = Backbone.Model.extend({
    initialize: function() {
        var that = this;
        var likes;
        var UrlGetLike = "https://api.facebook.com/method/fql.query?query=select%20like_count%20from%20link_stat%20where%20url=%27https://www.facebook.com/pages/Stackoverflow/1462865420609264%27&format=json";
        $.getJSON( UrlGetLike, {
            format: "json"
        })
        .done(function(data) {
            likes = data[0].like_count;
            that.set({
                'likes' : likes
            });
        });
    },
  });
return MyModel;
});

但是数据没有更新,在.done()完成之前返回MyModel。

我也试过了:

代码语言:javascript
复制
define(['backbone'], function (backbone) {

  var MyModel = Backbone.Model.extend({
    initialize: function() {
        var that = this;
        var likes;
        var UrlGetLike = "https://api.facebook.com/method/fql.query?query=select%20like_count%20from%20link_stat%20where%20url=%27https://www.facebook.com/pages/Stackoverflow/1462865420609264%27&format=json";
        $.getJSON( UrlGetLike, {
            format: "json"
        })
        .done(function(data) {
            likes = data[0].like_count;
            that.set({
                'likes' : likes
            });
            that.returnn;
        });
    },
    returnn: function(){
        return this;
    }
  });
});

但是我得到这样的错误:无法读取未定义的属性'prototype‘,因为我触发了

代码语言:javascript
复制
var collection = new Collection({collection : MyModel});

在MyModel返回之前(我想)

如果有人有解决方案或东西来帮助我,我将不胜感激:)。

EN

回答 1

Stack Overflow用户

发布于 2014-11-03 05:06:10

您可以在创建集合后获取集合中每个模型的信息(实际上,在initialize方法中获取数据是一件坏事,因为此方法不是为此目的而创建的。最好显式地调用模型的fetch方法(在我们的例子中,我们将其称为fetchLikes)。

代码语言:javascript
复制
  var MyModel = Backbone.Model.extend({
      fetchLikes: function () {
          var UrlGetLike = "https://api.facebook.com/method/fql.query?query=select%20like_count%20from%20link_stat%20where%20url=%27https://www.facebook.com/pages/Stackoverflow/1462865420609264%27&format=json";
          $.getJSON(UrlGetLike, {
              format: "json"
          }, _.bind(function (data) {
              likes = data[0].like_count;
              that.set({
                  'likes': likes
              });
          }, this));
      }
  });

  var Collection = Backbone.Collection.extend({
      model: MyModel
  })

   var collection = new Collection();

  //.. insert models in the colleciton ..

  collection.forEach(function (model) {
      model.fetchLikes();
  })

请记住,您正在使用for-loop进行ajax请求,这被认为是一种糟糕的做法。只有当您无法在一次请求中获取所有数据时才这么做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26704301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档