具有辅助方法的主干 toJSON

发布于 2024-12-17 13:05:50 字数 185 浏览 0 评论 0原文

我有一个带有属性的骨干模型和一些输出实际属性以外的内容的辅助方法(例如用于格式化)。

但是,当我调用 toJSON 时,仅返回属性,因此我的胡子模板无法访问这些辅助方法。有什么办法可以解决这个问题吗?或者我应该采取不同的方法?

解决此问题的唯一方法是创建属性的格式化版本并在每次属性更改时更新它吗?

I have a backbone model with attributes and some helper methods that output something other than the actual attribute (for formatting for example).

However, when I call toJSON, only the attributes are returned, so my mustache templates can't access those helper methods. Is there any way to resolve this? Or is there a different approach I should take?

Is the only way around this to create a formatted version of the attribute and update it each time that attribute changes?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

久伴你 2024-12-24 13:05:50

Jorge,我会用我自己的方法扩展 toJSON,并将新添加的 json 提供给模板。

像这样:

var userModel = Backbone.Model.extend({
    initialize: function(){
        _.bindAll(this, 'fullname', 'toFullJSON');
    },
    fullname: function(){
        return this.get('name') + " " + this.get('lastname');
    },
    toFullJSON: function(){
        var json = this.toJSON();
        return _.extend(json, {fullname : this.fullname()});
    }
});

var user = new userModel();
u.set({name: 'John', lastname: 'Doe'});

// you will see in this console log, that the toFullJSON function returns both the toJSON properties, and your added propert(y)(ies)...
console.log(u.toFullJSON());

Jorge, i would extend the toJSON in my own method, and give that new added json to the template.

like so:

var userModel = Backbone.Model.extend({
    initialize: function(){
        _.bindAll(this, 'fullname', 'toFullJSON');
    },
    fullname: function(){
        return this.get('name') + " " + this.get('lastname');
    },
    toFullJSON: function(){
        var json = this.toJSON();
        return _.extend(json, {fullname : this.fullname()});
    }
});

var user = new userModel();
u.set({name: 'John', lastname: 'Doe'});

// you will see in this console log, that the toFullJSON function returns both the toJSON properties, and your added propert(y)(ies)...
console.log(u.toFullJSON());
小…楫夜泊 2024-12-24 13:05:50

确保 JSON 正确。如果您返回对象,它们内部可能有一些反向引用(JSON 不支持它们,可能会被省略)。

Make sure that the JSON is correct. If you are returning objects, there may be some back references inside them (they are not supported in JSON and will be probably omitted).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文