2014-01-22 54 views
2

我想使用安全绑定与淘汰赛。这样做我使用knockout-secure-binding.jsKnockout.js安全绑定

谁能解释为什么下面的代码不起作用? 它抛出一个错误`

未捕获#<对象>淘汰赛安全-binding.js:74`

ko.applyBindings(new viewModel());

<html> 
<head> 
    <title></title> 
    <script src="scripts/knockout-3.0.0-min.js"></script> 
    <script src="knockout-secure-binding-master/dist/knockout-secure-binding.js"></script> 

</head> 
<body> 
    <button type="button" data-sbind="sbtnClick">button</button> 

    <script> 
     var bindings = { 
      sbtnClick: function() { 
       return {click: this.btnClick}; 
      } 
     }; 

     var viewModel = function() { 
      this.btnClick = function() { 
       alert('clicked'); 
      }; 
     }; 

     ko.bindingProvider.instance = new ko.secureBindingsProvider(bindings); 
     ko.applyBindings(new viewModel()); 
    </script> 

</body> 
</html> 

回答

2

你仍然需要写出来后,绑定处理程序的名称click

<button type="button" data-sbind="click: btnClick">button</button> 

而且你不需要这整个bindings对象与sbtnClick,只写:

var viewModel = function() { 
    this.btnClick = function() { 
     alert('clicked'); 
    }; 
}; 

ko.bindingProvider.instance = new ko.secureBindingsProvider(); 
ko.applyBindings(new viewModel()); 

演示JSFiddle

+0

太棒了!谢谢 :) – 31415926