javascript – 具有自定义参数的Rivets.js事件处理程序

前端之家收集整理的这篇文章主要介绍了javascript – 具有自定义参数的Rivets.js事件处理程序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚开始使用Rivets.js,它看起来很有前途的简单的数据绑定框架.

我已经到达了我不知道如何将“自定义参数”传递到rv-on-click绑定器,所以我试图从这个想法中获得:https://github.com/mikeric/rivets/pull/34

My code

rivets.binders["on-click-args"] = {
  bind: function(el) {    
    model = this.model;
    keypath = this.keypath;

    if(model && keypath)
    {
        var args = keypath.split(' ');
        var modelFunction = args.shift();
        args.splice(0,model);

        var fn = model[modelFunction];            
        if(typeof(fn) == "function")
        {
            this.callback = function(e) {
                //copy by value
                var params = args.slice();
                params.splice(0,e);                
                fn.apply(model,params);
            }

            $(el).on('click',this.callback);
        }                        
    }
  },unbind: function(el) {
    $(el).off('click',this.callback);
  },routine: function(el,value) {    
  }
}

这段代码正在工作,我的问题是:这是正确的方法吗?

解决方法

如果要将自定义参数传递给事件处理程序,则此代码可能会更简单:
rivets.configure({
    // extracted from: https://github.com/mikeric/rivets/issues/258#issuecomment-52489864
    // This configuration allows for on- handlers to receive arguments
    // so that you can onclick="steps.go" data-on-click="share"
    handler: function (target,event,binding) {
        var eventType = binding.args[0];
        var arg = target.getAttribute('data-on-' + eventType);

        if (arg) {
            this.call(binding.model,arg);
        } else {
            // that's rivets' default behavior afaik
            this.call(binding.model,binding);
        }
    }
});

启用此配置后,发送到rv-on-click处理程序的第一个唯一参数是由点击数据点指定的值.

<a rv-on-click="steps.go" data-on-click="homePage">home</a>

这不是我的代码(我发现它为here),但它与铆钉0.8.1一起工作.

还有一种将当前上下文传递给事件处理程序的方法.基本上,当事件触发时,传递给处理程序的第一个参数是事件本身(点击等),第二个参数是模型上下文.

所以说,你正在处理一个模型对象,这是一个rv-每个循环的产物…

<div rv-each-group="menu.groups">
    <input rv-input="group.name"><button rv-on-click="vm.addItem">Add item</button>
    ___ more code here ___  
</div>

然后,您可以访问事件处理程序中当前的“组”对象,如下所示:

var viewmodel = {
    addItem: function(ev,view) {
        var group = view.group;
    }
};

这个技术的更多细节可以在这里找到https://github.com/mikeric/rivets/pull/162

我希望这有帮助.

原文链接:https://www.f2er.com/js/155075.html

猜你在找的JavaScript相关文章