javascript - Backbone.js:在模型中设置模型属性?

标签 javascript backbone.js backbone-model

在 Backbone.js 中工作,我想从模型的方法中设置模型属性。这看起来应该很简单,但我无法让它工作。

目前我所拥有的是这个。我试图在调用“performSearch”期间设置“results”属性:

var SearchModel = Backbone.Model.extend({
    performSearch: function(str) {
      $.get('/' + str, function(results) {
        console.log(data);
        this.set("results", data);
      });
    },
});

这给了我以下错误:

Uncaught TypeError: Object #<Object> has no method 'set' 

我做错了什么?

最佳答案

问题是 this 没有绑定(bind)到 ajax 回调中的模型对象。

您可以通过执行以下操作来修复它:

var SearchModel = Backbone.Model.extend({
    performSearch: function(str) {
        //assign to local variable, so that it is accesible in callback's closure
        var self = this; 
        $.get('/' + str, function(results) {
            // are you sure it should be data?
            console.log(data);
            self.set("results", data);
        });
    },
});

另一种方法是将回调函数显式绑定(bind)到模型:

   var SearchModel = Backbone.Model.extend({
    performSearch: function(str) {
        //assign to local variable, so that it is accesible in callback's closure
        $.get('/' + str, (function(results) {
            // are you sure it should be data?
            console.log(data);
            this.set("results", data);
        }).bind(this)); //binding here
    },
});

关于javascript - Backbone.js:在模型中设置模型属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14222885/

相关文章:

javascript - Backbone.js 中的嵌套模型,如何处理

javascript - 切换 :active class with ReactJS

javascript - JavaScript 中的回调函数

javascript - Three.js - 使用深度和方向向量的 ExtrudeGeometry

backbone.js - 如何在backbone.js中创建基本 View ?

javascript - 主干模型属性在更新另一个属性时得到更新

javascript - 如何以编程方式正确移动对象?

backbone.js - Requirejs 将项目优化为单个文件

javascript - 为什么 JavaScript 中的字符串没有添加到数组中?

javascript - 在获取之前检查模型属性