- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法迭代选择列表中的项目并计算值。例如我有以下数据
“因素”:[ 20、 40、 60、 80、 100 ]
它目前在多选列表框中显示如下,我在 HTML 语句中计算级别0级:201级:402级:603级:804级:100
我想计算并显示一个起始值,如下所示;0级:0-201级:21-402级:41-603级:61-804级:81-100
当我显示当前级别时,如何才能回到 knockout 中的先前级别。例如,在选择列表框中,我显示 100,上一个级别是 80,但是当我显示 100 时,我想显示上一个级别 + 1 和当前级别 100,4级: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; 使用 System.Linq; 使用 System.Web;
namespace AuditReview.Models
{
public class ProjectTrustSetting
{
public string ProjectId { get; set; }
public int AdjustmentFactor { get; set; }
public List<int> ListPoints { get; set; }
}
}
Controller 数据示例:
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) {return 'Level ' + Factors().indexOf(factor) + ': ' + Factor},或在 knockout 中作为计算的可观察量或任何其他建议。
感谢您的帮助
最佳答案
您可以在 View 模型上创建一个函数来处理标签的生成。如果您向绑定(bind)提供函数,它将传入当前上下文作为第一个参数,因此您可以执行以下操作:
<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();
}
};
这里是a fiddle展示这是如何工作的。
关于javascript - 如何使用 Knockout 迭代 select 中的项目以显示范围值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15769191/
我不能解决这个问题。和标题说的差不多…… 如果其他两个范围/列中有“否”,我如何获得范围或列的平均值? 换句话说,我想计算 A 列的平均值,并且我有两列询问是/否问题(B 列和 C 列)。我只希望 B
我知道 python 2to3 将所有 xrange 更改为 range 我没有发现任何问题。我的问题是关于它如何将 range(...) 更改为 list(range(...)) :它是愚蠢的,只是
我有一个 Primefaces JSF 项目,并且我的 Bean 注释有以下内容: @Named("reportTabBean") @SessionScoped public class Report
在 rails3 中,我在模型中制作了相同的范围。例如 class Common ?" , at) } end 我想将公共(public)范围拆分为 lib 中的模块。所以我试试这个。 module
我需要在另一个 View 范围 bean 中使用保存在 View 范围 bean 中的一些数据。 @ManagedBean @ViewScoped public class Attivita impl
为什么下面的代码输出4?谁能给我推荐一篇好文章来深入学习 javascript 范围。 这段代码返回4,但我不明白为什么? (function f(){ return f(); functio
我有一个与此结构类似的脚本 $(function(){ var someVariable; function doSomething(){ //here } $('#som
我刚刚开始学习 Jquery,但这些示例对我帮助不大...... 现在,以下代码发生的情况是,我有 4 个表单,我使用每个表单的链接在它们之间进行切换。但我不知道如何在第一个函数中获取变量“postO
为什么当我这样做时: function Dog(){ this.firstName = 'scrappy'; } Dog.firstName 未定义? 但是我可以这样做: Dog.firstNa
我想打印文本文件 text.txt 的选定部分,其中包含: tickme 1.1(no.3) lesson1-bases lesson2-advancedfurther para:using the
我正在编写一些 JavaScript 代码。我对这个关键字有点困惑。如何在 dataReceivedHandler 函数中访问 logger 变量? MyClass: { logger: nu
我有这个代码: Public Sub test() Dim Tgt As Range Set Tgt = Range("A1") End Sub 我想更改当前为“A1”的 Tgt 的引
我正忙于此工作,以为我会把它放在我们那里。 该数字必须是最多3个单位和最多5个小数位的数字,等等。 有效的 999.99999 99.9 9 0.99999 0 无效的 -0.1 999.123456
覆盖代码时: @Override public void open(ExecutionContext executionContext) { super.open(executio
我想使用 preg_match 来匹配数字 1 - 21。我如何使用 preg_match 来做到这一点?如果数字大于 21,我不想匹配任何东西。 example preg_match('([0-9]
根据docs range函数有四种形式: (range) 0 - 无穷大 (range end) 0 - 结束 (range start end)开始 - 结束 (range start end st
我知道有一个UISlider,但是有人已经制作了RangeSlider(用两个拇指吗?)或者知道如何扩展 uislider? 最佳答案 我认为你不能直接扩展 UISlider,你可能需要扩展 UICo
我正在尝试将范围转换为列表。 nums = [] for x in range (9000, 9004): nums.append(x) print nums 输出 [9000] [9
请注意:此问题是由于在运行我的修饰方法时使用了GraphQL解析器。这意味着this的范围为undefined。但是,该问题的基础知识对于装饰者遇到问题的任何人都是有用的。 这是我想使用的基本装饰器(
我正在尝试创建一个工具来从网页上抓取信息(是的,我有权限)。 到目前为止,我一直在使用 Node.js 结合 requests 和 Cheerio 来拉取页面,然后根据 CSS 选择器查找信息。我已经
我是一名优秀的程序员,十分优秀!