1

JS:

define(["dojo/_base/declare","dojo/dom",
    "dijit/_Widget", "dijit/_TemplatedMixin",
    "dojo/text!./templates/MainViewWidget.html",
    "dijit/layout/TabContainer", "dijit/layout/ContentPane","dijit/layout/BorderContainer","dijit/form/TextBox", "dijit/layout/AccordionContainer"],
    function(declare, dom, _Widget, _TemplatedMixin, template){
        return declare("package.MainViewWidget", [_Widget, _TemplatedMixin], {
            widgetsInTemplate: true,
            templateString: template,
            constructor: function(){

            },
            startup: function(){

            },
            search: function(evt){
                alert('hi');
                alert(evt);
            }
        });
    });

模板/MainViewWidget.html:

<div class="mainContainer">


<div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="design:'sidebar', gutters:true, liveSplitters:true" style="width:100%;height:100%;">
    <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'left', splitter:true"> 
        <h2>List of trips</h2>
        <br />
        <input type="text" data-dojo-type="dijit.form.TextBox" data-dojo-props="placeHolder:'Search...'" data-dojo-attach-event="onchange:'search'"/>
        <br />

    </div>


    <div data-dojo-type="dijit.layout.TabContainer" data-dojo-attach-point="tabContainerDiv" data-dojo-props="region: 'center', tabPosition: 'top', tabStrip:'true', style:'width:80%;height:100%'">
        <div data-dojo-type="dijit.layout.ContentPane" title="Summary" data-dojo-props="selected:'true', title:'About'">Welcome. Navigate through the Left pane.</div>
    </div>
</div>
</div>

问题是,我想在TextBox. 正如您从data-dojo-attach-event="onchange:'search'". 我已经尝试了很多变体,但我无法让它工作。基本上我想要的是在 JS 中定义一个函数并将其作为处理程序附加到标记中。请帮忙。

4

2 回答 2

0

尝试:

data-dojo-attach-event="onChange:search"

Camelcase onChange,搜索周围没有引号。

于 2013-01-01T23:44:59.820 回答
0

遗憾的是,这不受支持。我花了大约两个小时才发现这一点。模板中具有data-dojo-type属性的任何节点都会被忽略_TemplatedMixin._attachTemplateNodes(参见第 177 行)。换句话说,data-dojo-attach-event只会绑定到普通的 DOM 节点(不是 Dijits)。

这至少适用于 v1.8。v1.9 中的附加处理不同(有一个_AttachMixin),所以它可能在那里工作。

于 2013-09-02T14:37:07.693 回答