0

カスタム コントロールが 1 つあります。コントロールがレンダリングされる前に、スクリプト側でオプションを設定したいのですが、どうすればオプションを渡すことができますか?

同じhtmlページでスクリプトを介してオプションを渡したいです。

<script type="text/javascript">

        $(document).ready(function () 
{

            var myDiv = document.getElementById("svgChart").winControl;





            WinJS.UI.setOptions(myDiv, {
                seriesList: [{
                    label: "s1",
                    legendEntry: true,
                    data: { x: [1, 2, 3, 4, 5], y: [-5, -3, 1, 7, 2] }
                }, {
                    label: "s2",
                    legendEntry: true,
                    data: { x: [1, 2, 3, 4, 5], y: [-2, -6, 2, 4, 3] }
                }, {
                    label: "s3",
                    legendEntry: true,
                    data: { x: [1, 2, 3, 4, 5], y: [-3, -5, 3, 2, 5] }
                }]
            });
        });

    </script>

しかし、wincontrol は未定義の要素を返しますか? コントロールが作成される前にいつオプションを設定できますか?

4

1 に答える 1

3

WinJS コントラクトでコントロールを使用する場合、コントロール インスタンスを作成する方法は 3 つあります。

  1. スクリプトからコンストラクターを呼び出す。例えばvar myControl = new Mynamespace.MyControl(element, options)
  2. WinJS.UI.processAllDOM ツリーを呼び出す。これは、VS で新しいプロジェクトを作成するときに、既定のテンプレートによって呼び出されます。
  3. WinJS.UI.process特定の DOM 要素を呼び出すことによって

1 を使用すると、任意の方法でオプションを明確に渡すことができます。

ただし、他の 2 つを使用する場合は、オプションをコントロールに宣言的に渡すことができます。

<div data-win-control="Mynamespace.MyControl"
     data-win-options="{ aProp: 'val', bProb: 3.14}">
   <!-- your other content --->
</div>

これは、コントロール コンストラクターのオプション パラメーターになります。これらすべてのプロパティをインスタンスに適用する場合は、 を使用WinJS.UI.setOptions(instance, optionsObject)して設定できます。

特定のケースでは、すでにいくつかのマークアップとコントロールがあるようです。コントロールが作成されてからオプションを設定するまで待つ必要があります。

于 2013-01-24T13:52:50.087 に答える