1

Dojoは、カスタムウィジェットのテンプレートhtmlファイルで宣言的に作成されたウィジェットを解析していないようです。

ただし、dojo構成が行われたホームページで宣言的に作成すると機能します

コードスニペットは次のとおりです。

ホームページ:

<html>
<head>
<script type="text/javascript">
var dojoConfig = {
            parseOnLoad: true,
            isDebug: true,
            modulePaths : {"com.cgb":"../../../client/vtm/com/cgb"}
};
</script>
<script type="text/javascript" src="../common/dojo/dojo/dojo.js"></script>
<script type="text/javascript">
    dojo.require("dojo.parser");
    dojo.require("com.cgb.modules.deposit.step1_agreement");
    dojo.require("dojox.mobile.ScrollableView");
</script>
</head>
<body>
<div data-dojo-type="com.cgb.modules.deposit.step1_agreement"></div>
</body>
</html>

カスタムウィジェット:

dojo.provide("com.cgb.modules.deposit.step1_agreement");

dojo.require("dojo.cache");
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");

dojo.require("dojox.mobile.ScrollableView");

dojo.declare("com.cgb.modules.deposit.step1_agreement", [dijit._Widget, dijit._Templated], {
    templateString: dojo.cache("com.cgb.modules.deposit", "templates/step1_agreement.html"),
    postCreate:function(){
        console.log("widget get instantiated");
    }
});

カスタムウィジェットのテンプレートhtml:

<div>
    <!--this widget didn't get parsed -->
    <div id="view1" dojoType="dojox.mobile.ScrollableView" height="50px">
        blah blahblah blah<br/>blah blahblah blah<br/>blah blahblah blah<br/>
        blah blahblah blah<br/>blah blahblah blah<br/>blah blahblah blah<br/>
        blah blahblah blah<br/>blah blahblah blah<br/>blah blahblah blah<br/>
    </div>
</div>

ScrollableViewウィジェットは解析されませんでしたが、ホームページで宣言すると機能します。多分私は何かを逃さなければならないと思います、私を助けてください。

4

2 に答える 2

5

youreはdojox.mobileを使用しているので、おそらくあなたのコードの構文の中間です。

http://dojotoolkit.org/documentation/tutorials/1.7/modules/#Defining_modules

テンプレートでウィジェットを使用する将来のバージョンでは、パラメーターwidgetsInTemplate: trueは非推奨になります。次に、dijit._WidgetsInTemplateMixinモジュールのミックスインとしてを含めます。

例えば; <1.7

dojo.provide("com.cgb.modules.deposit.step1_agreement");
dojo.require("...");
dojo.declare("com.cgb.modules.deposit.step1_agreement", [dijit._Widget, dijit._Templated], {


    widgetsInTemplate: true,


    templateString: dojo.cache("com.cgb.modules.deposit", "templates/step1_agreement.html"),
    postCreate:function(){
        console.log("widget get instantiated");
    }
});

および1.7+(モジュールにはファイル名/パスがモジュールおよび名前空間として含まれている必要があります)

define([ "dojo/_base/declare", "dijit/_WidgetBase", "dijit/_TemplatedMixin", 

        "dijit/_WidgetsInTemplateMixin" ], // note latter mixin

    function(declare, _WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin){
       return declare([ _WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin ], {});
});
于 2012-09-14T08:09:45.483 に答える
1

私はこのSOスレッドで答えを見つけました。

widgetsInTemplate: trueウィジェットの宣言を見逃しました。

于 2012-09-14T08:03:28.433 に答える