C# 更新淘汰JS可观测数组中的元素
我一直在阅读这个网站,终于有了一个问题,这个问题还没有针对我的需要得到足够明确的回答,所以我来回答 我在一个C#应用程序中创建了一个可观察数组,该数组是从一个传递给我的KO视图模型的数据数组创建的C# 更新淘汰JS可观测数组中的元素,c#,knockout.js,C#,Knockout.js,我一直在阅读这个网站,终于有了一个问题,这个问题还没有针对我的需要得到足够明确的回答,所以我来回答 我在一个C#应用程序中创建了一个可观察数组,该数组是从一个传递给我的KO视图模型的数据数组创建的 self.Stuff = ko.observableArray(data.Stuff); 这个数组没有可观察的元素,这就是我的问题所在。我需要通过onclick编辑元素(状态)。我知道我需要使元素可观察(不确定如何使用data.Stuff部分)或执行“valuehasmated”,但我不完全
self.Stuff = ko.observableArray(data.Stuff);
这个数组没有可观察的元素,这就是我的问题所在。我需要通过onclick编辑元素(状态)。我知道我需要使元素可观察(不确定如何使用data.Stuff部分)或执行“valuehasmated”,但我不完全确定该语法将如何工作
当然,我的推送和删除工作正常,因为它们触发arrayobservable并刷新视图
if ($form.valid() && isValidStuff) {
self.Stuff.push({ ABC: self.ABCInput(), XYZ: self.XYZInput(), Status: self.StatusInput()});
self.resetValues();
}
self.removeStuff = function () {
self.Stuff.remove(this);
};
self.StuffStatusChng= function (){
//What to do?
self.Stuff.vauleHasMutated();
};
任何帮助或推动正确的方向都将是一个巨大的帮助,谢谢!如果我没有足够的信息,请让我知道我能提供什么
谢谢,这对你有帮助吗
var OneStuff = function (data) {
this.ABC = ko.observable(data.ABC);
this.XYZ = ko.observable(data.XYZ);
this.Status = ko.observable(data.Status);
};
self.Stuff = ko.observableArray(ko.utils.arrayMap(data.Stuff, function (oneStuffData) {
return new OneStuff(oneStuffData);
}));
这将使单个属性可见
推动:
self.Stuff.push(new OneStuff({ ABC: self.ABCInput(), XYZ: self.XYZInput(), Status: self.StatusInput()}));
使用敲除映射插件如何: 它有一个fromJSON方法,该方法接受一个json字符串数组,并为每个属性创建一个可观察数组,该数组具有可观察属性: 这里可以找到一个fiddle:,注意一旦绑定,您可以更新名字,它将相应地更新属性 HTML: 只需下载并包含knockout.mapping.js
<div data-bind="foreach: people">
<div>
<input type="text" data-bind="value:firstName"/>
<span data-bind="text: firstName"></span>
<span data-bind="text: lastName"></span>
</div>
</div>
var stuff = '[{"firstName":"fred","lastName":"bloggs"},{"firstName":"david","lastName":"frost"}]';
console.log(stuff);
var people = ko.mapping.fromJSON(stuff);
console.log(people());
var viewModel ={};
viewModel.people=people;
ko.applyBindings(viewModel);