【问题标题】:Knockout set attributes and click event淘汰赛设置属性和点击事件
【发布时间】:2012-08-22 17:35:46
【问题描述】:

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

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

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

</script>

但是alert('a') 立即执行,我点击了生成动态内容的按钮,而不是在我点击该 div 时发出警报。

有什么办法可以解决吗?

【问题讨论】:

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


    【解决方案1】:

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

    所以你需要将你的警报调用包装到一个匿名函数中

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 刚刚更新了 Q,添加了更多细节。我正在处理动态内容
      猜你喜欢
      • 2015-02-24
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 2020-01-30
      • 2018-02-27
      • 2021-03-06
      • 1970-01-01
      • 2013-01-31
      相关资源
      最近更新 更多