Rails 4 - Bootstrap 滑块 - 在数据刻度上动态填充工具提示?
Rails 4 - Bootstrap Slider - dynamically populating tooltips on data ticks?
我正在尝试在我的 Rails 4 应用程序中使用 bootstrap 滑块。
我尝试使用的功能显示在 bootstrap-slider-rails gem 文档中的示例中。
我正在尝试根据数据滑块值动态填充工具提示文本。
在我看来,我有:
<input id="ex13" type="text" data-slider-ticks="[1, 2, 3, 4, 5, 6, 7, 8]" data-slider-ticks-snap-bounds="30" data-slider-ticks-labels='["Breadboard", "High Fidelity", "Low Fidelity", "Demonstration", "Operational Environment", "Prototype", "Relevant Environment", "Simulation"]' data-slider-value="<%= @project.trl.level %>"/>
然后在我的 js 文件中,我有:
jQuery(文档).ready(函数() {
$("#ex13").bootstrapSlider({
ticks: [ 10, 20, 30, 40, 50, 60, 70, 80],
ticks_labels: ["Breadboard", "High Fidelity", "Low Fidelity", "Demonstration", "Operational Environment", "Prototype", "Relevant Environment", "Simulation"],
ticks_snap_bounds: 30,
orientation: 'vertical',
tooltip_position: 'left',
enabled: false
});
});
我有一个名为 TRL 的模型。 table 具有称为级别(整数)和描述(文本)的属性。
数据滑块值现在显示 trl.level。那部分工作正常,但我不知道如何让格式化程序功能工作。
我可以从文档中看到格式化程序参数不能作为数据属性传递。
我试过把它加到js方法里,
$("#ex13").bootstrapSlider({
ticks: [ 10, 20, 30, 40, 50, 60, 70, 80],
ticks_labels: ["Breadboard", "High Fidelity", "Low Fidelity", "Demonstration", "Operational Environment", "Prototype", "Relevant Environment", "Simulation"],
ticks_snap_bounds: 30,
orientation: 'vertical',
tooltip_position: 'left',
enabled: false,
formatter: "<%= @project.trl.description%>"
});
那是行不通的。如何在滑块中使用格式化程序功能?
采纳 ASHITAKA 的建议
我尝试将我的 js 修改为:
jQuery(document).ready(function() {
$("#ex13").bootstrapSlider({
ticks: [ 10, 20, 30, 40, 50, 60, 70, 80],
ticks_labels: ["Breadboard", "High Fidelity", "Low Fidelity", "Demonstration", "Operational Environment", "Prototype", "Relevant Environment", "Simulation"],
ticks_snap_bounds: 30,
orientation: 'vertical',
tooltip_position: 'left',
enabled: false,
// formatter: "<%= @project.trl.description%>"
formatter: function(value) {
return "<%= @project.trl.description%>";
}
});
});
该尝试打印出 <%= @project.trl.description%> 而不是获取该属性的内容并将其打印出来。那么,实现这个概念的下一步是如何将保存在数据库中的数据传递给 js 工具提示?
您不能将 Ruby 方法(在本例中为 @project.trl.description
)传递给 JavaScript 库(在本例中为 bootstrap-slider
)。
我不知道 @project.trl.description
方法是做什么的,但你必须在 JavaScript 中重新实现该方法并像这样传递它:
$('#ex13').slider({
... // other options
formatter: function(value) {
return 'Current value: ' + value;
}
});
尝试将描述值添加到输入元素中的数据属性,这样当输入在 html 中呈现时,该值就在那里。我在您的输入中添加了数据描述属性
<input id="ex13" type="text" data-description="<%= @project.trl.description%>" data-slider-ticks="[1, 2, 3, 4, 5, 6, 7, 8]" data-slider-ticks-snap-bounds="30" data-slider-ticks-labels='["Breadboard", "High Fidelity", "Low Fidelity", "Demonstration", "Operational Environment", "Prototype", "Relevant Environment", "Simulation"]' data-slider-value="<%= @project.trl.level %>"/>
然后在格式化程序函数中,使用 jquery 从数据描述中获取值
formatter: function(value) {
var description = $('#ex13').attr("data-description")
return value+' '+description;
}
如果您的 jquery 版本 > 1.4.3 那么您应该使用
$('#ex13').data("description")
我正在尝试在我的 Rails 4 应用程序中使用 bootstrap 滑块。
我尝试使用的功能显示在 bootstrap-slider-rails gem 文档中的示例中。
我正在尝试根据数据滑块值动态填充工具提示文本。
在我看来,我有:
<input id="ex13" type="text" data-slider-ticks="[1, 2, 3, 4, 5, 6, 7, 8]" data-slider-ticks-snap-bounds="30" data-slider-ticks-labels='["Breadboard", "High Fidelity", "Low Fidelity", "Demonstration", "Operational Environment", "Prototype", "Relevant Environment", "Simulation"]' data-slider-value="<%= @project.trl.level %>"/>
然后在我的 js 文件中,我有:
jQuery(文档).ready(函数() {
$("#ex13").bootstrapSlider({
ticks: [ 10, 20, 30, 40, 50, 60, 70, 80],
ticks_labels: ["Breadboard", "High Fidelity", "Low Fidelity", "Demonstration", "Operational Environment", "Prototype", "Relevant Environment", "Simulation"],
ticks_snap_bounds: 30,
orientation: 'vertical',
tooltip_position: 'left',
enabled: false
});
});
我有一个名为 TRL 的模型。 table 具有称为级别(整数)和描述(文本)的属性。
数据滑块值现在显示 trl.level。那部分工作正常,但我不知道如何让格式化程序功能工作。
我可以从文档中看到格式化程序参数不能作为数据属性传递。
我试过把它加到js方法里,
$("#ex13").bootstrapSlider({
ticks: [ 10, 20, 30, 40, 50, 60, 70, 80],
ticks_labels: ["Breadboard", "High Fidelity", "Low Fidelity", "Demonstration", "Operational Environment", "Prototype", "Relevant Environment", "Simulation"],
ticks_snap_bounds: 30,
orientation: 'vertical',
tooltip_position: 'left',
enabled: false,
formatter: "<%= @project.trl.description%>"
});
那是行不通的。如何在滑块中使用格式化程序功能?
采纳 ASHITAKA 的建议
我尝试将我的 js 修改为:
jQuery(document).ready(function() {
$("#ex13").bootstrapSlider({
ticks: [ 10, 20, 30, 40, 50, 60, 70, 80],
ticks_labels: ["Breadboard", "High Fidelity", "Low Fidelity", "Demonstration", "Operational Environment", "Prototype", "Relevant Environment", "Simulation"],
ticks_snap_bounds: 30,
orientation: 'vertical',
tooltip_position: 'left',
enabled: false,
// formatter: "<%= @project.trl.description%>"
formatter: function(value) {
return "<%= @project.trl.description%>";
}
});
});
该尝试打印出 <%= @project.trl.description%> 而不是获取该属性的内容并将其打印出来。那么,实现这个概念的下一步是如何将保存在数据库中的数据传递给 js 工具提示?
您不能将 Ruby 方法(在本例中为 @project.trl.description
)传递给 JavaScript 库(在本例中为 bootstrap-slider
)。
我不知道 @project.trl.description
方法是做什么的,但你必须在 JavaScript 中重新实现该方法并像这样传递它:
$('#ex13').slider({
... // other options
formatter: function(value) {
return 'Current value: ' + value;
}
});
尝试将描述值添加到输入元素中的数据属性,这样当输入在 html 中呈现时,该值就在那里。我在您的输入中添加了数据描述属性
<input id="ex13" type="text" data-description="<%= @project.trl.description%>" data-slider-ticks="[1, 2, 3, 4, 5, 6, 7, 8]" data-slider-ticks-snap-bounds="30" data-slider-ticks-labels='["Breadboard", "High Fidelity", "Low Fidelity", "Demonstration", "Operational Environment", "Prototype", "Relevant Environment", "Simulation"]' data-slider-value="<%= @project.trl.level %>"/>
然后在格式化程序函数中,使用 jquery 从数据描述中获取值
formatter: function(value) {
var description = $('#ex13').attr("data-description")
return value+' '+description;
}
如果您的 jquery 版本 > 1.4.3 那么您应该使用
$('#ex13').data("description")