- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个 HTML
<select data-bind="value: $data.id">
<optgroup label="Regions" data-bind="foreach: countries.regions.names">
<option data-bind="html: $data.name, value: $data.value"></option>
</optgroup>
<optgroup label="Countries" data-bind="foreach: shipping.allCountries">
<option data-bind="html: $data.name, value: $data.code"></option>
</optgroup>
</select>
使用此 javascript,它在 2 个 optgroups
中的任何一个中预填充了一个 ID。 ID 始终存在!
this.id = ko.observable(data.id);
但是select
被KnockOut构建后,this.id()
的值为空,会返回undefined
。当我订阅该字段时,它会通知我它正在更新,但什么都没有。
我当前的(脏)修复:
setTimeout(function(){
self.id(data.id);
}, 500);
这可行,但当然不推荐。
另外,在select
中选择另一个元素后,返回原来的值,也是可以的。
我该如何解决这个问题?
注意:选择了正确的元素。
最佳答案
失败的原因是 value
的 <select>
元素在使用 foreach
绑定(bind)其内容之前绑定(bind)那value
如果无法选择模型值本身,则绑定(bind)会将模型值重置为元素中当前选择的任何值。
问题示例:http://jsfiddle.net/mbest/8r6KY/
有两种解决方案。
一种解决方案是防止 value
使用 Knockout 3.1(目前处于 Beta 阶段)中可用的新绑定(bind)选项重置模型值进行绑定(bind),valueAllowUnset
.
<select data-bind="value: $data.id, valueAllowUnset: true">
示例:http://jsfiddle.net/mbest/D6dR2/
第二种解决方案是获取 <option>
value
之前的元素被绑定(bind)。这可以通过在早期绑定(bind)内容的元素上进行自定义绑定(bind)来完成。
<select data-bind="bindInner, value: $data.id">
绑定(bind):
ko.bindingHandlers.bindInner = {
init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
ko.applyBindingsToDescendants(bindingContext, element);
return { controlsDescendantBindings: true };
}
};
示例:http://jsfiddle.net/mbest/ETFsa/
第一个选项使用内置解决方案,但确实有一个缺点,即 UI 选择使用 setTimeout
进行(在 value
绑定(bind)中)。因此,当 View 初始化时,您可以在选择中看到明显的变化。我认为第二种选择更好,当然,您可以同时使用这两种选择来双重解决问题。
关于javascript - SELECT with 2 optgroups build with KnockOut 将值重置为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21994210/
我有一个由“主页”、“关于”、“联系方式”、“个人资料”组成的菜单。将鼠标悬停在“个人资料”上时,我希望可以显示一个子菜单,其中包含指向我的 Github/Facebook 帐户等的链接。我该怎么做?
select2上是否可以有多层 optgroup? 基本上,另一个 optgroup 中的 optgroup。 option_1
我有两个下拉分组列表 (Optgroup)。我想使用向右移动、向左移动按钮在这两个 html 控件之间交换元素。我可以从左侧下拉列表项中选择一个或多个元素,然后单击右移按钮。在这种情况下,我可以将所选
在搜索时,如果没有匹配项,该选项将被隐藏,但即使没有子选项匹配,optgroup 仍会显示。如果没有匹配的选项,如何隐藏 optgroup? 我试过这个,这是我试过的代码:jsfiddle $("#u
Error: End tag for 'optgroup' which is not finished. You have probably failed to include a required
为什么这里的optgroup看不到? 显示所有选项,但不显示组名称 http://jsfiddle.net/UCNJ8/ $('').appendTo('body').append('test')
我有一个包含 3 个选项组的选择菜单。最后一个称为“自定义搜索”,当您选择它时,它将触发一个模式来选择不在下拉列表中的用户名并将其添加到数据库中。 长话短说,我想添加一个到optgroup但不太确定该
我所做的只是编辑一些旧代码,我在其中创建了一个选项组,但现在我想将其删除。我不能只用 css 来做到这一点,因为它使用了所选的插件。 function flavorChooser (title, it
我有一个 select 元素,它将显示在移动设备上 Australia Cars Report Australia Bikes Report
大家好,我有下表 -------------------------------------------- |ID|point_name|point_address|point_category| |
我有一个 jQuery 代码,可以从 ul li menu 创建 select。我想从父菜单添加 optgroup,但不知道如何添加。这是我的代码: // Create the dropdown ba
我正在使用 Codeigniter 查询我的数据库并返回一个数据数组。 我有这样一组数据: Array ( [0] => stdClass Object ( [depot_id
我有以下html格式的代码 [choose yours] SubItem2 Item2
我正在尝试向多个optgroup添加一个选项,问题是这个选项只显示在单个optgroup上,我不知道这个机制是不是默认逻辑html 或者我做错了: $(document).ready(function
当代码运行时,下面的标签不会读取空格后的字符串“数据”。我尝试在 optgroup 元素上使用一些 CSS,但它没有对其标签进行任何更改。 var data = "Names of Meters";
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
我想创建一个包含分组项目的下拉框。它用于我正在使用的数据库查找 HTML 表单。有没有一种方法可以选择组标题,从而选择该特定组中的所有项目?例如,如果组标题是“German Cars”并且包含项目“M
如何在 select 标签的 optgroup 上添加样式? http://jsfiddle.net/UCNJ8/3/ js: $('').appendTo('body').append('test'
如何从复选框字段中删除 optgroup field($model, 'survey_type')->dropDownList([$surveyTypeList],['prompt'=>'Select
我有一个用于搜索的下拉菜单设置。这个想法是您单击一个选项,然后 OPTGROUP 就会出现。我想做的是,一旦选择了标签,它就会跳转到 OPTGROUP 的该部分。 到目前为止我已经写了一些 jQuer
我是一名优秀的程序员,十分优秀!