IBM Worklight 6.0 - ошибка типа Get Uncaught не может вызвать метод initCollection неопределенного

Я работаю с Worklight над созданием приложения, использующего локальное хранилище. Я объявил функцию createCollection() в common/js/myApp.js.

Однако, когда я запускаю его в симуляторе браузера, консольный JavaScript показывает:

Uncaught TypeError: невозможно вызвать метод initCollection неопределенного значения.

Какие-либо предложения?

Мой JavaScript:

function wlCommonInit(){
// Common initialization code goes here
}

// inizializzazione json
window.onload = createCollection;

var isOpen = true;
var menuboxw = $("#menubox").css("width");
$("#contentbox").css("left",menuboxw);
var headerh = $("#header").height();
$("#contentbox").css("top", headerh);
$("#menu_btn").click(function(){menu()});

// apertura/chiusura menu principale
function menu() {
if(isOpen){
    $('#contentbox').animate({ left: -5 }, 1);
    $("#menubox").css("visibility", "hidden");
    isOpen = false;
}
else{
    $('#contentbox').animate({ left: menuboxw }, 1);
    $("#menubox").css("visibility", "visible");
    isOpen = true;
}
}

// creazione collection 'canti' e 'categorie'
function createCollection(){

WL.Logger.debug("Called createCollection");
WL.SimpleDialog.show("Message", "createCollection called", [{text: "Ok"}]);

var collectionCanti = "canti";
var searchFieldsCanti = {titolo: "string", autore: "string", id_categoria: "string", testo: "string"};
var collectionCategorie = "categorie";
var searchFieldsCategorie = {titolo: "string", attiva: "number"};

var success = function(data){
            logMessage("Collection created successfully " + data);
};

var failure = function(data){
            logMessage("Collection doesn't created " + data);
};

var options = {onSuccess: success, onFailure: failure};

canti = WL.JSONStore.initCollection(collectionCanti, searchFieldsCanti, options);
categorie = WL.JSONStore.initCollection(collectionCategorie, searchFieldsCategorie, options);

}

person Salvatore Ucchino    schedule 04.10.2013    source источник


Ответы (1)


Сделайте следующее:

  1. Удалить window.onload = createCollection;
  2. Добавьте createCollection(); внутрь wlCommonInit()

Кстати, это logMessage выдает ошибки. Вероятно, следует изменить на WL.Logger.debug (который вы уже используете в коде...).


Просмотрите учебный материал по началу работы с IBM Worklight. Без пропусков.

person Idan Adar    schedule 04.10.2013
comment
Кажется, теперь это работает, консоль больше не показывает ошибки, но диалоговое окно все еще не работает. JSONStore работает только в среде iOS и Android, в браузере я не могу показать, работает ли он, верно? У меня другой вопрос: когда вызывается wlCommonInit()? Какую часть кода я должен разместить в нем? - person Salvatore Ucchino; 04.10.2013
comment
Как я уже писал, УДАЛИТЕ window.onload = createCollection; и ВСТАВЬТЕ в функцию wlCommonInit() createCollection();. Я вижу диалог. wlCommonInit() срабатывает, когда приложение готово. Прочтите учебный материал по началу работы с IBM Worklight. - person Idan Adar; 04.10.2013