编程语言
首页 > 编程语言> > javascript – 骨干网中的预处理模型

javascript – 骨干网中的预处理模型

作者:互联网

在模型的字段上进行一些预处理的好方法是什么.例如,假设我有这些数据:

[{
        id: '1',
        sender: 'me',
        receiver: 'you',
        message: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum",
        date: new Date("October 13, 1975 11:13:00").toLocaleDateString()
    }]

在这个简单的模型中:

App.Models.Notification = Backbone.Model.extend({
    defaults: {
        'date': new Date()
    }
});

我希望减少消息值中的字符数,以便在视图中显示它,但前提是该消息包含的字符数超过给定数量.也许是这样的:

if ( this.model.get('message').trim().split(" ").length > 30 ) {
  // code here
}

所以,我不想在所有模型中执行预处理.我应该在我看来这样做吗?如果是这样,怎么样?我有read一些解决方案,但其中一些不适用于这种情况,其他似乎是一个黑客.

谢谢!

UPDATE

根据Alex的建议并作为参考,我在这里举了一个使用Handlebars模板助手的例子:

render: function() {

    Handlebars.registerHelper('getShort', function(options) {
        if ( options.fn(this).trim().split(" ").length > 30 ) {
            var message = options.fn(this);
            var shortText = $('<div/>', { text: message })
            .html()
            .trim()
            .substring(0, 200)
            .split(" ")
            .slice(0, -1)
            .join(" ") + "..."

            return shortText;
        }
        return options.fn(this);
    });

    template = Handlebars.compile( $("#my-template").html() );
    this.$el.html( template( this.model.toJSON() ));
    return this;
}

并像这样使用它:

的index.html

{{#getShort}}{{message}}{{/getShort}}

解决方法:

如果您的库堆栈支持它们,那么这种表示逻辑应该放在模板助手中.如果没有,只需将getShortenedMessage(length)方法添加到模型中并使用它来获取您的值.在任何情况下,不要改变实际的模型属性只是为了以不同的方式显示它 – 这是糟糕的设计,并可能导致以后的各种复杂.

标签:preprocessor,javascript,backbone-js
来源: https://codeday.me/bug/20190901/1783749.html