1

観察:

私が作成しているカスタム ウィジェットのテンプレート内に、次の行があります。

<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"/>

random_nameページ全体がクラッシュし、デバッガーは dojo で関数が見つからないことを通知します"scope"

コード全体を与えるために、ここにそれらがあります:

EDIT:onchangeの代わりにonChangeondijitchangeまたは「onclick」、「onClick」、「ondijitclick」などの他のイベントを試しましたが、ブラウザで何をしても検索が呼び出されません。

4

2 に答える 2

0

dijitでは、イベント名はonChangeです。

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

于 2012-12-31T12:54:14.493 に答える
0

コードとdojo 1.8 の入力例をよく見て、テンプレートから attach イベントを削除し、 dojo/onを使用してウィジェット 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を使用する必要がある場合があります。

お役に立てば幸いです。タイプミスはありませんでした。

于 2013-01-06T01:39:30.393 に答える