Knockout设置属性和点击事件

时间:2012-08-22 17:35:46

标签: knockout.js asp.net-mvc-4 knockout-2.0

我确实在我的模板中声明了点击

<script id="flipTemplate" type="text/html">

    <div data-bind="attr: {id:  ImageName }, click: alert('a')">
    ......

</script>

alert('a')直接执行我点击我生成动态内容的按钮,而不是当我点击该div时发出警告。

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

knockoutjs期望函数作为click binding参数而不是任意的js语句。

因此,您需要将警报调用包装成匿名函数

<div data-bind="attr: {id:  ImageName }, click: function(data, event) { alert('a') } ">

但我强烈建议将每个逻辑放入您的ko视图模型中,并在绑定中使用viewmodel方法。所以不要将逻辑放入data-bind表达式。

答案 1 :(得分:0)

我不确定你为什么要像这样设置你的Div。这会更好吗?

    <div id="mydiv"/>

    <script>
      $(document).ready(function() {
           $("#mydiv").click(function(ev){
             ev.preventDefault();
             alert("a");
           });
      });
    </script>