0

我有一个非常简单的html。这个 html 使用 panel.setHtml 方法显示在 Sencha Panel 中。示例 HTML 的布局如下。

HTML 文件

<!DOCTYPE html>
<html>
<head>
<script>
function copyText()
{
alert('It is clicked');
}
</script>
</head>
<body>

Field1: <input type="text" id="field1" value="Hello World!"><br>
Field2: <input type="text" id="field2">
<br><br>
<button onclick="copyText()">Copy Text</button>

</body>
</html>

下面的代码在面板内设置html。上面提到的html被截断为一行,并在面板内设置如下。

var res = '<!DOCTYPE html><html><head><script>function copyText(){}</script></head><body>Field1: <input type="text" id="field1" value="Hello World!"><br>Field2: <input type="text" id="field2"><br><br><button onclick="copyText()">Copy Text</button><p>A function is triggered when the button is clicked. The function copies the text from Field1 into Field2.</p></body></html>';
Ext.getCmp('dummyPanel').setHtml(res);

问题 :

单击按钮时,我收到“未捕获的 ReferenceError:未定义 copyText”错误。

关于我在这里做错了什么的任何想法?我们不能在 sencha 面板中设置完整的 html。

运行代码位于http://www.senchafiddle.com/#5LdC5

请帮忙。

谢谢你,甘达富

4

2 回答 2

1

我实现它如下。

Ext.Viewport.add({
    xtype     : 'panel',
    html      : '<button>Foo</button>',
    listeners : {
        element  : 'element',
        delegate : 'button',
        tap      : function () {
            console.log('button tap!');
        }
    }
});

因此,处理程序将只为按钮调用,没有别的。

谢谢

于 2013-03-17T20:19:54.483 回答
-1

我认为这里的“正确”答案是使用Sencha Touch button。除了可能不会导致此错误之外,Sencha 还做了大量工作来优化事件处理,并且使用内联事件并没有利用这些优化。我不确定,但我有一种强烈的感觉,即销毁该按钮甚至不会破坏那里的事件处理程序,这是代码中令人不快的泄漏。

var button = Ext.create('Ext.Button', {
    text: 'Copy Text'
});

button.on({
    click:{
         copyText()
    }
);
于 2013-03-10T05:46:48.623 回答