Javascript 淘汰:如何根据某些条件更改同一型号的数据
我有一个表,其中数据根据某些条件动态出现。我想了解一些数据,例如点击按钮Javascript 淘汰:如何根据某些条件更改同一型号的数据,javascript,html,knockout.js,frontend,Javascript,Html,Knockout.js,Frontend,我有一个表,其中数据根据某些条件动态出现。我想了解一些数据,例如点击按钮 if(true){ Show: ABC Data } else{ Show XYZ Data } 这是我用来扩展功能的方法,但不幸的是,我无法满足这个要求。在viewmodel构造函数中,您定义了一些关于如何加载数据的逻辑: self.items = ko.observableArray(data.map(function(i) { return n
if(true){
Show: ABC Data
}
else{
Show XYZ Data
}
这是我用来扩展功能的方法,但不幸的是,我无法满足这个要求。在viewmodel构造函数中,您定义了一些关于如何加载数据的逻辑:
self.items = ko.observableArray(data.map(function(i) {
return new rowModel(i.id, i.name, i.status);
}));
因为items是一个可观察的数组,所以您可以随时更新其内容
让我们将映射逻辑移到一个单独的函数:
self.loadData = function(rawData) {
var viewmodels = rawData.map(function(d) {
return new RowModel(d.id, d.name, d.status);
});
self.items(viewmodels);
};
在构造函数中,您现在可以加载初始数据,如下所示:
self.items = ko.observableArray();
self.loadData(data);
在按钮的单击回调中,您将重用新的loadData方法:
可选:
出于纯粹的美学原因,我通常定义一个静态构造函数帮助器,以便于映射:
RowModel.fromRawDataPoint = function(dataPoint) {
return new RowModel(dataPoint.id, dataPoint.name, dataPoint.status);
};
我会将构造函数中定义的函数移到VM的原型中:
MyVM.prototype.loadData = function(rawData) {
this.items(rawData.map(RowModel.fromRawDataPoint));
};
这里有一个更新的提琴:我不明白根据情况会发生什么。呈现不同的视图?将输入绑定到不同的项?你能在小提琴的上下文中详细说明吗?@user3297291当然可以,因此如果你看到Fiidle中的输出,就会有一个带有预定义值的表。对于我们的简单案例,我希望在Bottm上有一个按钮,我们称之为更改表值,点击它,将更改值,这是新的按钮,这正是我希望实现的。谢谢你的投入和解释。
MyVM.prototype.loadData = function(rawData) {
this.items(rawData.map(RowModel.fromRawDataPoint));
};