【问题标题】:How to declare dynamic TypeScript object name to be used in onClick event?如何声明要在 onClick 事件中使用的动态 TypeScript 对象名称?
【发布时间】:2016-08-28 15:21:56
【问题描述】:

假设我有一个 TypeScript 对象,我在视图的某处声明:

<script type="text/javascript">
    var myTSObject = Module.CustomClass('#someId');
    myISObject.bind();
</script>

现在我需要处理来自带有&lt;script&gt; 标签的元素内部的某处的点击:

<div id="thisDiv">
    <script type="text/javascript">
        var myTSObject = Module.CustomClass('#thisDiv');
        myISObject.bind();
    </script>
    <button onClick="myISObject.handleClick()" />
</div>

到目前为止一切都很好,但是如果我使用上面的 &lt;div&gt;...&lt;/div&gt; 块作为模板,那么当我的视图生成时,它看起来像这样:

<div id="thisDiv">
    <script type="text/javascript">
        var myTSObject = Module.CustomClass('#thisDiv');
        myISObject.bind();
    </script>
    <button onClick="myISObject.handleClick()" />
</div>
<div id="thatDiv">
    <script type="text/javascript">
        var myTSObject = Module.CustomClass('#thatDiv');
        myISObject.bind();
    </script>
    <button onClick="myISObject.handleClick()" />
</div>

这会失败是可以理解的,因为现在第二个 myISObject 覆盖了第一个。但由于 &lt;div&gt;...&lt;/div&gt; 块是模板,我无法硬编码 JS 变量名。如何相应地处理这个?

【问题讨论】:

  • myTSObject VS myISObject - 他们应该是一样的吗?

标签: javascript razor model-view-controller typescript


【解决方案1】:

将此设置在页面顶部:

var divnumber=0;

然后对每个 div 使用它:

divnumber++;
window['myISObject' + divnumber] = ...

【讨论】:

    猜你喜欢
    • 2021-08-14
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    相关资源
    最近更新 更多