0

我有一个自定义控件。我想在控件呈现之前在脚本端设置选项我如何传递选项?

我想通过同一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 契约的控件时,可以通过三种方式创建控件实例:

  1. 通过从脚本调用构造函数。例如var myControl = new Mynamespace.MyControl(element, options)
  2. 通过调用WinJS.UI.processAllDOM 树。在 VS 中创建新项目时,默认模板会为您调用此功能
  3. 通过调用WinJS.UI.process特定的 DOM 元素

使用 1 时,您可以清楚地传递您想要的选项。

但是,当使用其他两个时,您可以以声明方式将选项传递给控件:

<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 回答