Javascript 击倒剑道网格数据绑定事件
我有一个剑道用户界面网格使用设置 我在网格的一列中有几个自定义按钮,即调用ajax来编辑另一个div中的条目、删除一个或检查editId来调用函数。我的问题是,这两个事件都触发了两次!此外,对我来说,它看起来像是Javascript 击倒剑道网格数据绑定事件,javascript,knockout.js,kendo-ui,knockout-kendo,Javascript,Knockout.js,Kendo Ui,Knockout Kendo,我有一个剑道用户界面网格使用设置 我在网格的一列中有几个自定义按钮,即调用ajax来编辑另一个div中的条目、删除一个或检查editId来调用函数。我的问题是,这两个事件都触发了两次!此外,对我来说,它看起来像是数据绑定事件,而数据绑定事件是相同的 这里有一个 我尝试了一些不同的方法 还有一个 在绑定网格和数据时触发事件。 但是,当所有数据都存在时,我如何确定只获取一个事件 有人知道那里发生了什么吗?顺便说一句,我正在使用映射插件。由于不同的原因触发了dataBound事件。第一次触发时,如果您
数据绑定
事件,而数据绑定
事件是相同的
这里有一个
我尝试了一些不同的方法
还有一个
在绑定网格和数据时触发事件。
但是,当所有数据都存在时,我如何确定只获取一个事件
有人知道那里发生了什么吗?顺便说一句,我正在使用映射插件。由于不同的原因触发了
dataBound
事件。第一次触发时,如果您console.log()
该事件,您将看到:
是一个空数组e.sender.\u data
[]
ise.element[0]
div.k-grid.k-widget
是一个长度为3的数组,包含如下项:e.sender.\u data
{color:“green”,name:“apple”,uid:“…”}
是e.element[0]
(相同的元素)div.k-grid.k-widget
KO.applyBindings(newviewmodel())代码>初始化对象并触发事件。之后,当剑道试图在内部绑定元素数据时,再次触发事件
要避免这种情况,请参阅:
在这里,您可以使用类似于:
var grid = $("#grid").data("kendoGrid");
grid.bind("dataBinding", grid_dataBinding);
grid.dataSource.fetch();
当初始配置绑定设置为autoBind:false
这样您就不会意外地捕捉到第一个错误的数据绑定事件
如果我有时间,我将用一个JSFIDLE来演示这一点
解决方案1:这应该会有所帮助
解决方案2:
设置autoBind:false
,使网格不会自动绑定。(@jason9187)
正如另一位用户所提到的,您可以通过更改上述telerik文档中提到的设置来关闭初始自动绑定:
基本上,在您的第一种方法中,此修复:
变成:
或者在第二种方法中添加相同的属性
Fiddle:设置autoBind:false
,以便网格不会自动绑定
this.gridConfig = {
data: self.myData,
autoBind : false,
datasource: {
data: 'data'
},
dataBound: function(){
alert('dataBound');
},
dataBinding: function(){
alert('dataBinding');
},
};
我在下面贴了一个回复。它确实会稍微改变代码的格式,以实现您想要的。如果您有任何关于如何使其在当前设置中工作的具体问题,请让我知道。很简单,但它似乎可以解决此问题!抱歉:-/这都是关于分享信息和互相帮助的:)好的,非常感谢!我的设置非常复杂,文件大约有1600行。。。但事实上,似乎简单的一行*autoBind:false*解决了我的问题。。。
var grid = $("#grid").data("kendoGrid");
grid.bind("dataBinding", grid_dataBinding);
grid.dataSource.fetch();
this.gridConfig = {
data: self.myData,
autoBind : false,
datasource: {
data: 'data'
},
dataBound: function(){
alert('dataBound');
},
dataBinding: function(){
alert('dataBinding');
},
};