ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-09-01 13:35:36  阅读:205  来源: 互联网

标签:preprocessor javascript backbone-js


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

[{
        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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有