Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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 提高敲除自定义绑定的效率(频繁触发)_Javascript_Jquery_Knockout.js_Custom Binding - Fatal编程技术网

Javascript 提高敲除自定义绑定的效率(频繁触发)

Javascript 提高敲除自定义绑定的效率(频繁触发),javascript,jquery,knockout.js,custom-binding,Javascript,Jquery,Knockout.js,Custom Binding,附件是一些按钮的自定义绑定处理程序的代码段,这些按钮被设计成单选组 我的问题是,当我点击一个按钮时,它会触发6次更新 我想我需要增加一个节流阀或绑定不同,但我是新的淘汰赛,所以任何帮助将不胜感激 或者,当它触发相同的更新6次时,它实际上是否不会影响淘汰性能 只要一个指向正确方向的指针就可以了 ko.bindingHandlers.buttonGroupChecked={ init:function(元素、valueAccessor、allBindingsAccessor、, viewModel

附件是一些按钮的自定义绑定处理程序的代码段,这些按钮被设计成单选组

我的问题是,当我点击一个按钮时,它会触发6次更新

我想我需要增加一个节流阀或绑定不同,但我是新的淘汰赛,所以任何帮助将不胜感激

或者,当它触发相同的更新6次时,它实际上是否不会影响淘汰性能

只要一个指向正确方向的指针就可以了

ko.bindingHandlers.buttonGroupChecked={
init:function(元素、valueAccessor、allBindingsAccessor、,
viewModel,bindingContext){
if(globallo的类型!='undefined'&&globallo===true){
console.log(“buttonGroupInit”);
}
var value=valueAccessor();
var newValueAccessor=函数(){
返回{
单击:函数(){
值($(元素).data('value'));
}
}
};
ko.bindingHandlers.event.init(元素,newValueAccessor,
allBindingsAccessor、viewModel、bindingContext);
},
更新:函数(元素、valueAccessor、allBindingsAccessor、,
viewModel,bindingContext){
if($(element.data('value')==ko.unwrap(valueAccessor()){
//$(元素)。最近('.btn')。按钮('toggle');
$(element).sides().removeClass('btn-success').addClass('btn-info');
$(元素).removeClass('btn-info').addClass('btn-success');
}
if(globallo的类型!='undefined'&&globallo===true){
log(“按钮组更新”+ko.unwrap(valueAccessor());
}
}
}
var ViewModel=函数(){
此选项值=可观察的ko(2);
};
globallo=true;
var vm=new ViewModel();
ko.应用绑定(vm)

我知道您已经自己解决了这个问题,但我想说的是,您不需要自定义绑定来实现这一点。这里有一个例子

var ViewModel=函数(){
this.group1=['1','2','3','4','5','5+'];
this.optionsValue=ko.可观察('2');
};
globallo=true;
var vm=new ViewModel();
ko.应用绑定(vm)

如果有人偶然发现这一点,这就是我最终的做法,考虑到迪恩所说的,它仍然需要一些改进,但应该为某人提供一个良好的起点

如果可以的话,我只想从DOM中删除$parent、$data等(我记得在某处看到了这样做的方法),但总的来说,这是一次不错的第一次尝试

//用于抽象出jQuery依赖关系-以防万一将来某个时候jQuery被另一个库替换。
函数activeClassSingle(元素、标准类、activeClass){
$(element).sides().removeClass(activeClass).addClass(standardClass);
$(元素).removeClass(标准类).addClass(活动类);
}
ko.bindingHandlers.buttonGroupChecked={
init:function(元素、valueAccessor、allBindingsAccessor、,
viewModel,bindingContext){
var value=valueAccessor();
var newValueAccessor=函数(){
返回{
单击:函数(){
值(allBindingsAccessor.get('val');
}
}
};
ko.bindingHandlers.event.init(元素,newValueAccessor,
allBindingsAccessor、viewModel、bindingContext);
},
更新:函数(元素、valueAccessor、allBindingsAccessor、,
viewModel,bindingContext){
if(allBindingsAccessor.get(“val”)==ko.unwrap(valueAccessor()){
activeClassSingle(元素,“btn信息”,“btn成功”);
}        
}
}
var成人=[
{val:1,文本:“1”},
{val:2,文本:“2”},
{val:3,文本:“3”},
{val:4,文本:“4”},
{val:5,文本:“5”},
{val:6,文本:“5+”}
];
var ViewModel=函数(){
此成人n=可观察的ko(2);
};
var vm=new ViewModel();
ko.应用绑定(vm)


忽略我我是个白痴-将我的日志放错地方:-P将保留此代码,因为它是一个有用的(非常有用的)代码段,这正是我编写自定义绑定的原因-将丑陋的代码从DOM中删除,并使其更易于重用。鼓励人们这样做是不好的,你能删除答案吗,不要在你帮助别人的时候否决投票!!!!我实际上鼓励人们这样做,而不是编写一个使用jquery操纵dom的自定义绑定。但是如果你想让我删除我的答案,我会的。我同意jQuery部分,但在自定义绑定中操纵DOM是他们的目的,我很懒惰,因为我知道这是一个应用程序,它将在整个生命周期中使用jQuery-也许在没有jQuery的情况下重新编写绑定处理程序,因为它确实是一个有效点,但是,从长远来看,将这些代码放在DOM中是不好的(我每页有7/8的“radio”组),如果是这样,我会将选项放在模型中。请参阅更新的答案。我实际上很喜欢这一概念,不幸的是,考虑到一些值将与其显示的文本不同,这将需要我在这一阶段准备更多的工作-但是很好的提示,仍然认为自定义绑定是一条路要走,特别是如果你想做香草的话,你可以自己写一个选择器