msdn Web サイトからいくつかの Windows 8 チュートリアルに取り組んでいます。具体的には、私はこれに取り組んでいます。
私のコードの一部(チュートリアルからコピーされたものは、なぜそれがエラーになるのか、私の心を吹き飛ばしています。以下のサンプル:
(function () {
"use strict";
var list = getBlogPosts();
var groupedItems = list.createGrouped(
function groupKeySelector(item) { return item.group.key; },
function groupDataSelector(item) { return item.group; }
);
var dataPromises = [];
var blogs;
var blogPosts = new WinJS.Binding.List();
function getFeeds() {
blogs = [
{
key: "blog1",
url: 'http://windowsteamblog.com/windows/b/developers/atom.aspx',
title: 'tbd', updated: 'tbd',
acquireSyndication: acquireSyndication, dataPromise: null
},
// lots more entries ...
];
blogs.forEach(function (feed) {
feed.dataPromise = feed.acquireSyndication(feed.url);
dataPromises.push(feed.dataPromise);
});
return WinJS.Promise.join(dataPromises).then(function () { return blogs });
}
// more code...
})();
行dataPromises.push(feed.dataPromise);
でエラーが発生しますJavaScript runtime error: Unable to get property 'push' of undefined or null reference
。dataPromises
ファイルの先頭近くで定義され、空の配列に初期化されていることがわかります(また、で初期化しようとしましたnew Array();
)。
ここで何が間違っているのですか?私は愚かな失敗をしたと思います... ちなみに、dataPromises
上記のスニペットに表示されている 3 つの場所は、プロジェクト内のどこにでも表示される唯一の場所です。
私の最初の考えは巻き上げでしたが、何か魔法のようなことが起こっていない限りdataPromises
、最上位の関数スコープをオーバーライドしている可能性のあるローカルスコープで明示的に宣言していません。