Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.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
Javascript knockout js remove函数不适用于嵌套表_Javascript_Html_Knockout.js - Fatal编程技术网

Javascript knockout js remove函数不适用于嵌套表

Javascript knockout js remove函数不适用于嵌套表,javascript,html,knockout.js,Javascript,Html,Knockout.js,我一直在尝试用“Delete comp”链接删除公式元素,但我不确定为什么它不起作用。此外,“添加另一个合成”链接只工作一次,但不是多次。 我正在使用Knockout.js,任何解释为什么它不起作用都会非常有用 $(文档).ready(函数(){ var initialData=[ ]; var brandNamesModel=函数(brandNames){ var self=这个; self.brandNames=ko.observearray(ko.utils.arrayMap)(品牌名称

我一直在尝试用“Delete comp”链接删除公式元素,但我不确定为什么它不起作用。此外,“添加另一个合成”链接只工作一次,但不是多次。 我正在使用Knockout.js,任何解释为什么它不起作用都会非常有用

$(文档).ready(函数(){
var initialData=[
];
var brandNamesModel=函数(brandNames){
var self=这个;
self.brandNames=ko.observearray(ko.utils.arrayMap)(品牌名称、功能(药物){
返回{brandName:drug.brandName,配方:ko.observearray(药物.配方),成分:ko.observearray(药物.成分)};
}));
self.addBrandName=函数(){
self.brandNames.push({
品牌名称:“,
公式:ko.observearray(),
组成:ko.array()
});
};
self.removeBrandName=功能(药物){
self.brandNames.remove(药物);
};
self.add配方=功能(药物){
药物配方({
组成:ko.array()
});
};
self.removeFormulations=函数(公式){
$.each(self.brandNames(),function(){this.formulations.remove(formulation)})
};
self.addComposition=功能(药物){
药物({
类型:“,
编号:“
});
};
self.removeComposition=函数(合成){
$.each(self.brandNames(),function(){this.compositions.remove(composition)})
};
self.save=函数(){
self.lastSavedJson(JSON.stringify(ko.toJS(self.brandNames)),null,2);
};
self.lastSavedJson=ko.可观察(“”)
};
ko.applyBindings(新品牌名称模型(initialData));
});

品牌名称
品牌名称
配方
配方
药片
糖浆

加药
保存到JSON


很明显,您需要
公式
对象来删除
组合
。因此,为了获得
公式
以及
组合
,我将如何编写点击绑定:

<a href='#' data-bind='click: function() {$root.removeComposition($data, $parent) }'>Delete comp</a>
$(文档).ready(函数(){
var initialData=[
];
var brandNamesModel=函数(brandNames){
var self=这个;
self.brandNames=ko.observearray(ko.utils.arrayMap)(品牌名称、功能(药物){
返回{brandName:drug.brandName,配方:ko.observearray(药物.配方),成分:ko.observearray(药物.成分)};
}));
self.addBrandName=函数(){
self.brandNames.push({
品牌名称:“,
公式:ko.observearray(),
组成:ko.array()
});
};
self.removeBrandName=功能(药物){
self.brandNames.remove(药物);
};
self.add配方=功能(药物){
药物配方({
组成:ko.array()
});
};
self.removeFormulations=函数(公式){
$.each(self.brandNames(),function(){this.formulations.remove(formulation)})
};
self.addComposition=功能(药物){
药物({
类型:“,
编号:“
});
};
self.removeComposition=函数(组合、公式){
配方。组合物。去除(组合物);
};
self.save=函数(){
self.lastSavedJson(JSON.stringify(ko.toJS(self.brandNames)),null,2);
};
self.lastSavedJson=ko.可观察(“”)
};
ko.applyBindings(新品牌名称模型(initialData));
});

品牌名称
品牌名称
配方
配方
药片
糖浆

加药
保存到JSON


您可以发布一些虚拟数据吗?没有它,人们只需要阅读代码!如果您不知道,您可以通过编辑器中的“代码”按钮创建一个工作代码段。是的,我已经包含了它。哇!非常感谢你的努力。现在清楚了。:)
self.removeComposition = function(composition,formulation ) {
  formulation.compositions.remove(composition);
};