gpt4 book ai didi

javascript - Backbone 中的预处理模型

转载 作者:行者123 更新时间:2023-11-29 09:55:11 25 4
gpt4 key购买 nike

对模型的字段进行一些预处理的好方法是什么。例如,假设我有以下数据:

[{
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()
}
});

而且我想减少 message 值中的字符数,以便在 View 中显示它,但前提是该消息包含的字符数超过给定数量。也许是这样的:

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

因此,我不想在所有模型中执行该预处理。我应该这样做吗?如果是这样,如何?我有 read一些解决方案,但其中一些不适用于这种情况,而另一些则看起来像是 hack。

谢谢!

更新

根据 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) 方法来建模并使用它来获取您的值。在任何情况下,都不要更改实际的模型属性只是为了以不同的方式显示它 - 这是糟糕的设计,可能会在以后导致各种复杂情况。

关于javascript - Backbone 中的预处理模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13652039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com