我有一个自定义控件。我想在呈现控件之前在脚本端设置选项,如何传递选项?
我想通过同一 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返回未定义的元素? 在创建控件之前,我什么时候可以设置选项?
将控件与 WinJS 协定一起使用时,有三种方法可以创建控件实例:
- 通过从脚本调用构造函数。 例如
var myControl = new Mynamespace.MyControl(element, options)
- 通过在 DOM 树上调用
WinJS.UI.processAll
。这是在 VS 中创建新项目时默认模板为您调用的 - 通过调用特定 DOM 元素上的
WinJS.UI.process
使用 1 时,您可以根据需要清楚地传递选项。
但是,使用其他两个时,可以通过声明方式将选项传递给控件:
<div data-win-control="Mynamespace.MyControl"
data-win-options="{ aProp: 'val', bProb: 3.14}">
<!-- your other content --->
</div>
这将是控件构造函数的选项参数。如果您希望将所有这些属性应用于您的实例,则可以使用 WinJS.UI.setOptions(instance, optionsObject)
来设置它们。
在您的特定情况下,看起来您已经有一些标记和一个控件 - 您只需要等到创建控件后才能在其上设置选项。