ユーザーがアプリを移動するときに、サイトマップ配列を埋めています。
ただし、サイトマップを埋める私のロジックには欠陥があります。これが私がやっていることです:
var siteMap = [],
j = siteMap.length;
$(document).on( "pagebeforechange", function( e, data ) {
if (j == 0 ){
// add cause sitemap has no elements
siteMap.push( { type: "external", data: data });
} else {
// loop through the sitemap object
for ( var i = 0; i < j; i++) {
// check if element is already stored
if ( data.toPage == self.options.siteMap[i].data.toPage ){
break;
}
self.options.siteMap.push( { type: "external", data: data } );
}
}
});
問題は、休憩が期待どおりに機能しないことです。サイトマップをループして、data.toPage (/some/page.html のような文字列) を既に保存したものと比較したかったのです。一致が見つかった場合、新しい要素をサイトマップにプッシュせずにループを終了する必要があります。ただし、現在ループしており、ループ位置 (1) で要素が見つからない場合、ブレークは発生せず、エントリが一致するまですべてのループにエントリを追加しています。
質問:
ループを修正して、一致するものが存在しない場合にのみエントリを追加するにはどうすればよいですか?
手伝ってくれてありがとう!
編集:
これは私が今持っているものです:
(function( $, window) {
$.widget("mobile.multiview",$.mobile.widget, {
options: {
siteMap = {};
},
eventBindings: function() {
$(document).on( "pagebeforechange", function( e, data ) {
var self = this;
if (!self.options.siteMap[data.toPage]){
self.options.siteMap[data.toPage] = { type: "external", data: data };
}
});
}
}) (jQuery,this);