如何将ko.mapping.fromJS数组中的项复制到视图模型的另一个属性
How do I copy an item from a ko.mapping.fromJS Array to another property of the viewmodel?
这里有一些曾经在Knockout 2上运行的现有代码中工作的东西,我正在重构到Knockout 3。
视图模型的属性从提要(简化代码)初始化:
$.ajax({
url: "/api/GetData",
data: {
clientId: clientId
},
type: "GET",
dataType: "json",
contentType: 'application/json; charset=utf-8',
traditional: true,
success: function (data) {
viewModel.periods(ko.mapping.fromJS(data)());
viewModel.selectedPeriod = ko.observable(viewModel.periods()[0]);
},
async: false
});
调试值时,viewModel.selectedPeriod =
行有效,但绑定不起作用。
所以这失败了。。。
<ul data-bind="foreach: selectedPeriod.Years">
<li data-bind="text: Year"></li>
</ul>
而这是有效的:
<ul data-bind="foreach: periods">
<li>
<ul data-bind="foreach: Years">
<li data-bind="text: Year"></li>
</ul>
</li>
</ul>
我在一个简化的Fiddle中重现了我的问题:https://jsfiddle.net/frankvaneykelen/w3opn442/12/
只需对代码进行一些更改。。。
viewModel.selectedPeriod(viewModel.periods()[0]); // observable method call instead of assigning
<ul data-bind="foreach: selectedPeriod().Years"> // resolve the observable first ...
工作代码可以在这里找到
https://jsfiddle.net/0cLtvqz0/4/
您需要使用with
绑定来适当缩小上下文范围:
https://jsfiddle.net/lobotomize/w3opn442/13/
注意外部div 上的with
绑定
<div class="col-xs-6" data-bind="with: selectedPeriod">
<h5>selectedPeriod.Years</h5>
<ul data-bind="foreach: Years">
<li data-bind="text: Year"></li>
</ul>
</div>
相关文章:
- 使用Clipboard.js复制span文本
- ZeroClipboard-在复制之前添加到值
- 在VanillaJS中模拟模型双向数据绑定
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 为集合分配大量的模型弹药
- 如何使用backbone.js从集合中获取模型名称
- 复制图像路径以单击它
- 复制当前url按钮-Javascript
- 骨干模型默认值-todos.js示例中不必要的代码
- EmberJS中支持单字母单词模型
- 将属性模型复制到剪贴板
- 将表单复制到Backbone.js模型
- 在 ember 上复制嵌套模型.js(成功保存后)
- 将 req.body 属性复制到猫鼬模型中时出错
- 使用 JavaScript 复制模型的输入文本不起作用
- 如何将ko.mapping.fromJS数组中的项复制到视图模型的另一个属性
- 我如何向angular指令发送模型的引用,而不是复制
- Javascript复制和粘贴不能正确格式化模型值
- 如何复制没有模型的商店
- 如何在环回 JS 中轻松复制模型和相关模型