Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新淘汰JS可观测数组中的元素_C#_Knockout.js - Fatal编程技术网

C# 更新淘汰JS可观测数组中的元素

C# 更新淘汰JS可观测数组中的元素,c#,knockout.js,C#,Knockout.js,我一直在阅读这个网站,终于有了一个问题,这个问题还没有针对我的需要得到足够明确的回答,所以我来回答 我在一个C#应用程序中创建了一个可观察数组,该数组是从一个传递给我的KO视图模型的数据数组创建的 self.Stuff = ko.observableArray(data.Stuff); 这个数组没有可观察的元素,这就是我的问题所在。我需要通过onclick编辑元素(状态)。我知道我需要使元素可观察(不确定如何使用data.Stuff部分)或执行“valuehasmated”,但我不完全

我一直在阅读这个网站,终于有了一个问题,这个问题还没有针对我的需要得到足够明确的回答,所以我来回答

我在一个C#应用程序中创建了一个可观察数组,该数组是从一个传递给我的KO视图模型的数据数组创建的

    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);