如何使用Knockout迭代select中的项以显示范围值
How to iterate through items in select with Knockout to display range values
是否有一种方法可以遍历选择列表中的项并计算值?例如,我有以下数据
"因素":[20.40,60岁,80年,One hundred.)
当前显示在多个选择列表框中,我在HTML语句中计算级别0级:20一级:40二级:60三级:80四级:100
我想计算并显示一个起始值如下;0级:0-20一级:21-40等级2:41-60三级:61-80四级:81-100
当我显示当前级别时,如何在knockout中返回到上一个级别?例如,在选择列表框中,我显示的是100,前面的等级是80,但是当我显示100时,我想显示前面的等级+ 1,当前等级为100。四级:81-100
这些值可以被用户修改,所以他们可以输入15、45、70、80、100的因数。然后我想根据这些数字显示一个范围值,例如0-15、16-45等。
在knockout/javascript/html
HTML: <select id="factorsSelect" multiple="multiple" size="10" data-bind="options:factors, selectedOptions:selectedFactors,
optionsText: function(factor) {return 'Level ' + factors().indexOf(factor) + ': ' + factor}"></select>
JavaScript: function FactorInfo(projectid, adjustmentfactor, listpoints) {
this.projectid = ko.observable(projectid);
this.adjustmentfactor = ko.observable(adjustmentfactor);
this.listpoints = ko.observableArray(listpoints);
this.displayFactorName = ko.dependentObservable(function () {
return this.projectid() + " -- " + this.adjustmentfactor();
}, this);
}
// Factor construction
var Factor = function () {
this.factor = ko.observable();
};
// get project trusted data from wcf service
$.getJSON("../../Home/GetProjectTrustSettings", function (jsonData) {
var mappedGlobal = $.map(jsonData, function (item) {
vm.adjustmentFactor(item.AdjustmentFactor);
vm.mySelectedproject(item.ProjectId);
vm.factors(item.ListPoints);
return new FactorInfo(item.AdjustmentFactor, item.ProjectId, item.ListPoints);
});
});
var vm = {
//app observables
levelIdSize: ko.observable(""),
myGlobal: ko.observableArray([]),
// percent tab observables
percents: ko.observableArray([]),
percentlevelids: ko.observableArray([]),
selectedPercents: ko.observableArray([]).trackDirtyFlag(),
percentItemToAdd: ko.observable(""),
globalPercent: ko.observable("").extend({ required: "Enter a Global Percent, between 1 and 100." }).trackDirtyFlag(),
levelSize: ko.observable(""),
// factor tab observables
factors: ko.observableArray([]),
factorlevelids: ko.observableArray([]),
selectedFactors: ko.observableArray([]).trackDirtyFlag(),
factorItemToAdd: ko.observable(""),
adjustmentFactor: ko.observable("").extend({ required: "Enter an Adjustment Factor, between 1 and 100." }).trackDirtyFlag(),
// project observable
myProject: ko.observableArray([]),
mySelectedproject: ko.observable("1"),
projectIdChange: ko.observable(false),
// check if something changes with project ID
setProjectDirtyFlag: function () {
this.projectIdChange(true);
//console.log(this.projectIdChange());
}
};
使用MVC格式:模型:使用系统;使用System.Collections.Generic;使用来;使用包含;
namespace AuditReview.Models
{
public class ProjectTrustSetting
{
public string ProjectId { get; set; }
public int AdjustmentFactor { get; set; }
public List<int> ListPoints { get; set; }
}
}
控制器样本数据:
public JsonResult GetProjectTrustSettings()
{
//create list
var trustSetting = new List<ProjectTrustSetting>
{
new ProjectTrustSetting
{
ProjectId = "30729",
AdjustmentFactor = 5,
ListPoints = new List<int>
{ 20, 40, 60, 80, 100}
}
};
return Json(trustSetting, JsonRequestBehavior.AllowGet);
}
寻找创建起始范围值的最佳方法,无论是在knockout,HTML, JavaScript中。我在想应该有一些方法在HTML中做到这一点,在我已经拥有的功能内。
optionsText: function(factor){返回'Level ' + factors(). indexof (factor) + ': ' + factor},或在knockout中作为计算观察值或任何其他建议。
感谢您的帮助
您可以在视图模型上创建一个函数来处理标签的生成。如果您向绑定提供一个函数,它将在当前上下文中作为第一个参数传递,因此您可以这样做:
<select data-bind="options: levels,
optionsText: label,
selectedOptions: selectedLevels" multiple="true"></select>
self.label = function(level) {
var index = self.levels().indexOf(level);
if (index === 0) {
return level.name() + " 0-" + level.level();
} else {
var floor = self.levels()[index -1].level() + 1;
return level.name() + " " + floor + "-" + level.level();
}
};
- 显示范围输入的值"无法读取属性'值'“为空”;
- 根据输入范围更新显示的文本量
- 根据输入范围更新显示的文本量
- 选择随机图像,检查是否在特定范围内并相应显示
- 日期-时间范围指令字段未显示任何值
- 当间隔之间的范围高时,在高图表中显示y轴上的整个值
- 具有固定最小值的jQuery UI滑块:显示最小范围,而不是最小绝对值
- jQuery:检索日期选择器日期,检查是否在日期范围内,显示/隐藏字段
- AngularJS-ng显示范围变量不起作用
- angular won't显示范围变量(已完成)
- 如何使多个标签显示在JQuery范围滑块中
- 显示已动态添加的范围
- 在范围中显示活动选项卡的名称
- 单击时显示范围标题,就像鼠标悬停时一样
- 如何为显示的每个范围滑块显示范围滑块的范围值
- 如何用0-100的上拖更新显示范围元素值
- 如何使用Knockout迭代select中的项以显示范围值
- 调整日历查看日显示范围自定义时间
- 在html输入上显示范围验证器错误消息
- 选择“列表显示范围”