2012-12-28 51 views
1

我有以下代码:淘汰赛click事件

<div class="icon-upload" data-bind="click: button('upload') "> Upload </div> 

ko.bindingHandlers.button = { 
    init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) 
    { 
     //alert('works'); 
     console.log(element); 
    } 
}; 

但我不断收到一个button is not defined错误。我正在尝试使用参数执行on('click')事件,以确定后面的初始化绑定。

例如,点击button('upload')我想初始化以下binding

ko.bindingHandlers.image = { 
     init: function (element, valueAccessor, allBindingsAccessor, context) 
     { 
      var value = ko.utils.unwrapObservable(valueAccessor()), 
       $element = $(element); 
       console.log($element) 

      $element.html(value); 

      /*$element.pluploadQueue({ 
       runtime: 'gears, browserplus, html5, flash, html4', 
       max_file_size: '10mb', 
       max_file_count: 10, 
       chunk_size: '1mb', 
       unique_names: true, 
       multiple_queues: true, 
       drop_element: true, 
       dragdrop: true, 
       filters : [ 
        {title : "Image files", extensions : "jpg,gif,png"} 
       ] 
      });*/ 
     } 
    }; 

回答

1

你做错了。您应该创建自定义绑定button,这将在click事件中触发。

ko.bindingHandlers.button = { 
    init: function (element) { 
     $(element).click(function() { 
      // Your logic 
     }); 
    } 

    update: function(element, valueAccessor, allBindingsAccessor) { 
     switch(ko.utils.unwrapObservable(valueAccessor())) { 
      case 'upload': ... 
     } 
    } 
} 

鉴于

<div class="icon-upload" data-bind="button: 'upload'"> Upload </div> 
+0

好吧,我想这样尝试比 – Alex

+0

我做到了另一种方式毕竟...但我相信你对接受的答案 – Alex