Knockout.js 敲除-绑定到单个集合项
我有一个可观察到的文化特定对象的集合。需要与主编辑屏幕分开编辑/显示不变项 问题是-我可以对集合中的单个项目进行双向绑定吗 更为复杂的UI/VIE模型的简化版本可在以下网站获得: 我在视图模型中尝试了computed writable属性,但它没有检测到集合中的不变项何时更改 您的意见将不胜感激。代码如下所示:Knockout.js 敲除-绑定到单个集合项,knockout.js,Knockout.js,我有一个可观察到的文化特定对象的集合。需要与主编辑屏幕分开编辑/显示不变项 问题是-我可以对集合中的单个项目进行双向绑定吗 更为复杂的UI/VIE模型的简化版本可在以下网站获得: 我在视图模型中尝试了computed writable属性,但它没有检测到集合中的不变项何时更改 您的意见将不胜感激。代码如下所示: var ItemDescription = function () { var me = this; me.CultureInvariantId = ko.obser
var ItemDescription = function () {
var me = this;
me.CultureInvariantId = ko.observable(0);
me.CultureFormat = ko.observable('');
me.Description = ko.observable('');
me.IsInvariant = ko.observable(false);
};
function viewModel()
{
var me = this;
me.Name = ko.observableArray();
me.InvariantName = ko.observable('');
}
function Initialize()
{
var model = new viewModel();
var invItemDescription = new ItemDescription();
invItemDescription.Description('Invariant description');
invItemDescription.CultureFormat ('');
invItemDescription.IsInvariant = true;
model.Name.push(invItemDescription);
var usItemDescription = new ItemDescription();
usItemDescription.Description('USA description');
usItemDescription.CultureFormat ('en-US');
usItemDescription.IsInvariant = false;
model.Name.push(usItemDescription);
return model;
}
ko.applyBindings(new Initialize());
如果我理解你想做什么,那么我认为一个不错的选择是创建一个表示不变量
itemsdescription
对象的计算可观察对象。然后,您可以使用带有绑定的来根据编辑器的属性绑定编辑器
比如:
function viewModel()
{
var me = this;
me.Name = ko.observableArray();
me.SelectedName = ko.observable();
me.InvariantName = ko.computed(function() {
return ko.utils.arrayFirst(me.Name(), function(name) {
return name.IsInvariant;
});
});
}
使用如下标记:
<select data-bind="options: Name, optionsText: 'Description', value: SelectedName">
</select>
<div data-bind="with: SelectedName">
<textarea data-bind="value: Description"> </textarea>
</div>
Edit Invariant:
<div data-bind="with: InvariantName">
<input type="input" data-bind="value: Description" />
</div>
编辑不变量:
样本: