javascript - 主干JS : iterate on model attribute and change value

标签 javascript backbone.js underscore.js backbone-model

我想创建一个函数,其功能类似于 toJSON() 的返回和编辑模型的功能。

我的问题是如何迭代模型的属性并编辑您选择的属性的特定值。

如果有模型,例如:

Item = Backbone.Model.extend({
    defaults: {
        name: '',
        amount: 0.00
    },
    toHTML: function(){
        // i think this is the place where
        // where i can do that function?

        //
        console.log(this.attribute)
    }
});
var item = new Item;

item.set({name: 'Pencil', amount: 5}): 

item.toJSON();
-> {name: 'Pencil', amount: 5}

// this is the function
item.toHTML();
-> {name: 'Pencil', amount: 5.00}

最佳答案

您可以使用 for ... in loop 遍历一个对象然后使用 toFixed格式化数字:

toHTML: function() {
    var attrs = { }, k;
    for(k in this.attributes) {
        attrs[k] = this.attributes[k];
        if(k === 'amount')
           attrs[k] = attrs[k].toFixed(2);
    }
    return attrs;
}

请注意,amount 将以字符串形式出现,但这是获得 5.00 而不是 5 的唯一方法。我可能会将格式设置留给模板,而不会为这个 toHTML 实现而烦恼。

演示:http://jsfiddle.net/ambiguous/ELTe5/

关于javascript - 主干JS : iterate on model attribute and change value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19042289/

相关文章:

javascript - Select2 - 使用自定义模板时不显示占位符

javascript - Backbone.*.extend 是否为定义的类设置原型(prototype)值?

javascript - Backbone.js - 在模型中定义 json 数组

javascript - 为什么函数在主干中的选项对象中传递?

javascript - 使用 Backbone.js 获取随下拉菜单变化的段落

javascript - 如何避免使用 2 个条件对 JavaScript 数组进行两次排序

javascript - 如何在javascript中动态设置组合框的值

javascript - js递归函数意外改变变量

javascript - 在集合中查找模型

javascript - 使用 GPU 加速的视差效果