将下拉列表绑定到外部模态的敲除值
Bind dropdown to knockout value from external modal
我有一个视图模型包含2个数组。一个数组是用户数组,另一个数组是用户级别数组。
{
"Users": [
{
"UserLevel": {
"Permissions": [],
"Id": 2,
"Name": "Developer",
"SortOrder": 1,
"IsHidden": false
},
"Id": 1,
"Username": "Björn Jakobsson",
"Password": null,
"Fullname": null,
"Email": "bjiorn@bjinteractive.se",
"Phone": null
}
],
"UserLevels": ko.observableArray([
{
"Permissions": [],
"Id": 1,
"Name": "Admin",
"SortOrder": 2,
"IsHidden": false
},
{
"Permissions": [],
"Id": 2,
"Name": "Developer",
"SortOrder": 1,
"IsHidden": false
}
])
}
和下拉
<select data-bind="options: $parent.UserLevels(), optionsText:'Name', value: UserLevel" class="form-control"></select>
在从用户数组编辑用户时,我有一个下拉菜单用于选择该用户的用户级别,该用户级别由UserLevels数组填充。如果我选择一个用户级别(在这种情况下,开发人员)并保存我的数据库保存的价值,和重新加载页面显示正确的值,但是一旦我选择编辑用户(使用引导模式和数据绑定,自动下拉选择Admin(第一个数组中),而不是开发人员从我的用户模型,然后更新用户模型自用户级用户必然会下降。
我认为你的绑定是不正确的。你没有绑定到可观察数组,而是绑定到可观察数组解析到的内容(即数组)
使用options: $parent.UserLevels
不是options: $parent.UserLevels()
您可能需要添加一个optionsValue
绑定。
通常情况下,您只希望使用optionsValue作为确保的集合更新时,KO可以正确地保留选择可用的选项。例如,如果你反复得到一个列表"car"对象通过Ajax调用,并希望确保选中的汽车,您可能需要将optionsValue设置为"carId"或无论每个"汽车"对象有什么唯一标识符,否则KO不会必须知道前面的"car"对象对应于哪个哪一个是新的
我找到了一种方法来解决这个问题,用我自己的value来代替。下面是我使用的代码。编辑有什么缺点或错误吗?我是一个很新的KO和仍然有问题,有时当使用unwrap, unwrapobservable等,但下面的代码工作。改进的想法?
ko.bindingHandlers.valueBasedOnObject = {
init: function (element, valueAccessor, allBindings) {
var prop = allBindings().optionsValue;
var value = valueAccessor();
$(element).change(function () {
var value = $(element).val();
var selectedModel = ko.utils.arrayFirst(ko.unwrap(allBindings().options()), function (item) {
return ko.utils.unwrapObservable(item[prop]) == value;
});
valueAccessor()(selectedModel);
});
var valueUnwrapped = ko.unwrap(value);
$(element).val(valueUnwrapped[prop]);
},
update: function (element, valueAccessor, allBindings) {
/* */
}
};
相关文章:
- jqueryajax调用是复制url,当在模态视图之后在外部js文件中进行调用时
- angularjs模态将数据传输到外部控制器的正确方法
- Google PageSpeed Insights说我的网站很重.外部模态是一种解决方案吗?
- 分解javascript/jquery代码,以便在单击外部时隐藏模态
- facebox 1.3,当您在模态外部单击时不会关闭对话框
- JQuery模态对话框外部ui
- 从HTML外部打开模态
- 使用外部多模态JavaScript
- 使用redux单击react- bootstrap中的外部模态
- 将下拉列表绑定到外部模态的敲除值
- 加载外部js文件到bootstrap模态框
- 在引导模态外部单击关闭时的回调函数
- 捕捉外部jquery ui模态中的点击
- 在控制器外部创建角模态
- 引导模态点击关闭或外部点击不停止youTube视频
- 通过点击模态外部来关闭模态
- React用class查找所有组件,从外部更新组件状态或道具.模态叠加
- 从外部源加载链接内部模态
- 如何从模型外部访问模态实例$scope
- 使用ajax将外部页面调用到模态窗口中