NoUiSlider 从收集字段获取初始值并更新更改 - Meteor
NoUiSlider getting initial value from collection field and update on change - Meteor
编辑:问题不再有效,因为我停止使用 NoUiSlider 包。请参阅下面我的回答,看看我为此做了什么。
我正在尝试为每个任务设置一个实时进度条,当我进入页面时,我希望滑块具有来自集合字段的起始值。
目前它甚至没有出现。一旦我将 "start: progressNow" 更改为 "start:0",它仅适用于客户端,而不会 save/change 数据库上的任何内容。
内部方法:
addTask: function (projectId, text, description, due, progress) {
check(projectId, String);
check(text, String);
if (!this.userId) {
throw new Meteor.Error(403, 'not-authorized');
}
Tasks.insert({
text: text,
createdAt: new Date(),
owner: this.userId,
username: Meteor.user().username || Meteor.user().profile.name,
projectId: projectId,
taskDescription: description,
due: due,
progress: 0
});
},
事件和渲染:
Template.task.events({
"change .slider": function () {
var progressVal = this.noUiSlider.value;
Tasks.update({
progress: progressVal
})
},
});
Template.task.rendered = function () {
var progressNow = return Tasks.findOne({_id: this._id}).progress;
this.$('.slider').noUiSlider({
start: progressNow,
connect: "lower",
step: 0,
format: wNumb({
decimals: 0,
}),
range: {
'smin': 0,
'max': 100
}
});
this.$('.slider').Link('lower').to(this.$('.range'));
};
我没有使用 NoUiSlider 包,而是使用 HTML5。
创建任务时,进度自动为0(基本上是任务创建方法中的一行。
Tasks.insert({
//other fields
progress: 0,
});
简单 HTML - {{progress}} 只是进度字段值。
<form>
<input type="range" value="{{progress}}" class="progress" name="progress" min="0" max="100">
</form>
<span class="spn-btn">{{progress}}</span>
内部方法:
updateProgress: function(taskId, progress) {
Tasks.update(taskId,{
$set: { progress:progress}
});
}
内部模板事件:
'change input[type="range"]': function (e,t) {
var progress = e.target.value;
Meteor.call("updateProgress", this._id, progress);
console.log('success!');
}
干杯。
编辑:问题不再有效,因为我停止使用 NoUiSlider 包。请参阅下面我的回答,看看我为此做了什么。
我正在尝试为每个任务设置一个实时进度条,当我进入页面时,我希望滑块具有来自集合字段的起始值。
目前它甚至没有出现。一旦我将 "start: progressNow" 更改为 "start:0",它仅适用于客户端,而不会 save/change 数据库上的任何内容。
内部方法:
addTask: function (projectId, text, description, due, progress) {
check(projectId, String);
check(text, String);
if (!this.userId) {
throw new Meteor.Error(403, 'not-authorized');
}
Tasks.insert({
text: text,
createdAt: new Date(),
owner: this.userId,
username: Meteor.user().username || Meteor.user().profile.name,
projectId: projectId,
taskDescription: description,
due: due,
progress: 0
});
},
事件和渲染:
Template.task.events({
"change .slider": function () {
var progressVal = this.noUiSlider.value;
Tasks.update({
progress: progressVal
})
},
});
Template.task.rendered = function () {
var progressNow = return Tasks.findOne({_id: this._id}).progress;
this.$('.slider').noUiSlider({
start: progressNow,
connect: "lower",
step: 0,
format: wNumb({
decimals: 0,
}),
range: {
'smin': 0,
'max': 100
}
});
this.$('.slider').Link('lower').to(this.$('.range'));
};
我没有使用 NoUiSlider 包,而是使用 HTML5。
创建任务时,进度自动为0(基本上是任务创建方法中的一行。
Tasks.insert({
//other fields
progress: 0,
});
简单 HTML - {{progress}} 只是进度字段值。
<form>
<input type="range" value="{{progress}}" class="progress" name="progress" min="0" max="100">
</form>
<span class="spn-btn">{{progress}}</span>
内部方法:
updateProgress: function(taskId, progress) {
Tasks.update(taskId,{
$set: { progress:progress}
});
}
内部模板事件:
'change input[type="range"]': function (e,t) {
var progress = e.target.value;
Meteor.call("updateProgress", this._id, progress);
console.log('success!');
}
干杯。