dojo templatedmixin里面的widget事件行为

时间:2012-12-31 12:16:21

标签: dojo

观察:

在我正在制作的自定义小部件模板中,有一行:

<input type="text"  data-dojo-props="placeHolder:'Search...'" data-dojo-attach-event="onchange: search"/>

这在改变时工作正常,我的小部件的搜索功能被调用。但是显示器是普通的输入框,而不是dijit的花哨显示器。所以我这样做:

<input type="text" data-dojo-type="dijit.form.TextBox" data-dojo-props="placeHolder:'Search...'" data-dojo-attach-event="onchange: search"/>

现在,显示很好但是在更改时不会调用搜索。现在我这样做了:

<input type="text" data-dojo-type="dijit.form.TextBox" data-dojo-props="placeHolder:'Search...'" data-dojo-attach-event="onchange: random_name"/>

整个页面崩溃和调试器告诉我dojo在random_name中找不到函数"scope"

要提供整个代码,here它们是:

编辑 :代替onchange,我尝试了onChangeondijitchange或任何其他事件,例如'onclick','onClick ','ondijitclick'等,但搜索永远不会在浏览器中调用。

2 个答案:

答案 0 :(得分:0)

在dijit中,事件名称为onChange。

API: http://dojotoolkit.org/api/1.8/dijit/form/TextBox#onChange

答案 1 :(得分:0)

好好看看你的代码,dojo 1.8 input example我可能会从模板中删除attach事件,并使用dojo/on将其添加到widget js文件的'startup'函数中。

所以拿你的'MainViewWidget.js'代码和你的模板标记,这是我会尝试的修改:

首先是模板更改......

<input type="text" data-dojo-type="dijit.form.TextBox" data-dojo-props="placeHolder:'Search...'" data-dojo-attach-point="inputNode"/>

并且小部件更改...

define(["dojo/_base/declare","dojo/dom",
        "dijit/_Widget", "dijit/_TemplatedMixin",
        "dojo/text!./templates/MainViewWidget.html",
        "dojo/on",
        "dijit/layout/TabContainer", "dijit/layout/ContentPane","dijit/layout/BorderContainer","dijit/form/TextBox", "dijit/layout/AccordionContainer"],

function(declare, dom, _Widget, _TemplatedMixin, template, on){
    return declare("package.MainViewWidget", [_Widget, _TemplatedMixin], {

    // widgetsInTemplate: true, /*keep this false, otherwise data-dojo-attach-event attribute is a pain in the ass!*/

    templateString: template,

    constructor: function(){
    },

    startup: function(){
        on(this.inputNode, "change", function(){//or just have your search function here instead
             alert('hi');
        });
    }
  });
});

如果你想在'on'处理程序中使用'this'引用小部件,你可能需要使用dojo的lang.hitch作为事件处理程序。

希望有帮助,而且我没有任何错别字。