2012-12-14 43 views
1

我在使用Javascript在Windows 8應用程序中綁定到ListView時遇到了大量問題。數據綁定到Windows 8 ListView

在default.js上的「激活」事件裏面我編寫了一些代碼來從Web服務獲取一些數據並將其推送到數組中。該位工作正常,數組已填充。

我遇到的問題是應用程序無法識別數據。我有這樣的代碼在一個頁面調用inspections.html:

data-win-options="{itemTemplate: select('#imageTextListCollectionTemplate'), 
           itemDataSource: dataList.dataSource, 
           layout: {type: WinJS.UI.ListLayout}} 

,然後在「激活」事件,我宣佈:

var dataList = new Array(); 

,並從Web服務的數據推入此陣。但是在運行時,我收到一條錯誤消息,說「在未定義的dataList上找不到dataSource」。

我已經在MS網站上做了一些例子,其中一個例子創建了一個虛擬數據集並從命名空間引用它。我有點覺得我在這裏想念的是名字空間,但我不知道default.js的名字空間是什麼。或者,也許我錯了,這是完全不同的東西。

請幫助 - 這是如此重要(應該很容易),但我無法繞過它。

+0

我不知道JS Metro的語法,但是你的語法看起來是錯誤的 - 如果'dataList'是一個'Array',那麼它不會包含'dataSource'屬性......是嗎? – McGarnagle

回答

1

是否想在HTML或JavaScript中創建數據列表?

看來你想從JavaScript創建它。假設你已經從你的web服務推你的數據到數組,你只需要調用:

var dataList = new WinJS.Binding.List(array);

現在訪問dataList.dataSource是完全有效的。

另外,要創建數據列表,您並不總是需要一個數組。你也許可以先建立一個空列表,然後繼續直接將數據從Web服務的數據列表,如:

var dataList = new WinJS.Binding.List([]); 
dataList.push(value1); 
dataList.push(value2); 

...

希望它能幫助。如果您還有其他問題,請告訴我。

0

如果你正在通過HTML側指定數據源的困擾

利用這一點,你可以輕鬆地去通過它,你綁定到ListView的數據JS不想像側

var list = new WinJS.Binding.List(array here); 
listView.itemDataSource = list.dataSource;