在用WinJS开发的过程中,比如添加一个Pivot控件,添加PivotItem1,PivotItem2...
在js文件中执行对应的PivotItem语句,会发现这样一种情况:
PivotItem1是程序启动后首先呈现在界面中的元素,而Item2、Item3还没有被初始化,这时候如果js中单纯的去数据绑定Item2、Item3的值,
会出现"0x800a138f - JavaScript runtime error: Unable to set property 'itemDataSource' of undefined or null reference"。
这时候通过加断点调试才发现,该控件的winControl为undefined,所以xxx.winControl.itemDataSource肯定也为undefined。
那么需要首先把PivotItem2、3的控件初始化,这样可以解决winControl为undefined的问题:
//原JS: var glistv = document.getElementById("GuideListView"); glistv.winControl.itemDataSource = data.dataSource; //替换为: var glistv = document.getElementById("GuideListView"); WinJS.UI.processAll(glistv).then(function dataBinding() { glistv.winControl.itemDataSource = data.dataSource; });