我有一个名为exercise
的模板。模板exercise
只从db。订阅了一个练习(数据)。
我正在构建触控打字应用程序。模板exercise
是用户写下准备好的文本的一部分。
这个模板会非常复杂。
我需要一些额外的逻辑,所以我创建了类ExerciseText
。
目标是:我需要在模板助手和模板exerciseText
的事件中共享对象exercise
。我需要该对象exerciseText
在模板exercise
的实时时间内具有某种状态。
它有效,但这是一个好模式吗?谢谢你的任何想法。
ExerciseText.js
"use strict";
export default class ExerciseText {
constructor(exercise) {
this.text = exercise.text;
}
get getText() {
return this.text.split('');
}
// many logic wow
}
exercise.js
"use strict";
import ExerciseText from '../../../imports/api/client/ExerciseText.js';
Template.exercise.helpers({
exercise: () => {
if (Template.instance().subscription.ready()) {
return Template.instance().exercise;
}
},
text: () => {
if (Template.instance().subscription.ready()) {
return Template.instance().exerciseText.getText;
}
}
});
Template.exercise.onCreated(()=> {
var instance = this;
instance.autorun(() => {
var params = Router.current().params;
var lessonUrl = params.lessonUrl;
var exerciseOrder = parseInt(params.rank);
instance.subscription = instance.subscribe('exercise', lessonUrl, exerciseOrder);
if (instance.subscription.ready()) {
var lesson = Lessons.findOne() || {};
if (lesson.hasOwnProperty('exercises')) {
// lesson has only one published exercise
// there si only one element in that array
instance.exercise = lesson.exercises[0];
instance.exerciseText = new ExerciseText(instance.exercise);
}
}
});
});