Объект JavaScript теряет ссылку на функции [дубликат]Jquery

Программирование на jquery
Ответить
Anonymous
 Объект JavaScript теряет ссылку на функции [дубликат]

Сообщение Anonymous »

Я тестирую платформу SAPUI5 с помощью небольшого приложения со списком задач. У меня есть база данных, и я получаю доступ к данным через службу REST. Я могу перенести все в свой пользовательский интерфейс и из пользовательского интерфейса в базу данных.

Однако я сохраняю ссылку на данные базы данных в модели JSON, которая сопоставляется с таблицей, которую я показываю в пользовательском интерфейсе. Когда я пытаюсь добавить/удалить элементы, запись в базу данных, похоже, работает правильно, но моя переменная модели внутренней модели теряет ссылку между различными вызовами функций (например, initToDoModel и addToDo). Вот код:

Код: Выделить всё

  sap.ui.controller("sapui5_test.SAPUI5_Test", {

//THIS IS THE REFFERENCE
todoModel : null,

addTodo : function(text) {
this.doAjax("/add", {
text : text
}).done(function(todo) {

//HERE todoModel IS UNDEFINED BUT WAS SET IN initTodoModel
this.todoModel.getProperty("/").push(todo);
this.todoModel.updateBindings();
this.getView().rerender();
});
},

initTodoModel : function() {

var oModel = new sap.ui.model.json.JSONModel();
var aData = jQuery.ajax({
type : "GET",
contentType : "application/json",
url : "http://sapm04.ibsolution.local:50000/demo.sap.com~d337_resttest_web/rest/todo/init/",
dataType : "json",
async: false,
success : function(data,textStatus, jqXHR) {

oModel.setData({modelData : data});

//HERE THE todoModel IS SET
this.todoModel = oModel;
alert("Ok");
}

});
return oModel;
},

doAjax : function(path, content, type, async) {
var params = {
url : "http://sapm04.ibsolution.local:50000/demo.sap.com~d337_resttest_web/rest/todo" + path,
dataType : "json",
contentType : "application/json",
context : this,
//async : false,
cache : false
};

params["type"] = type || "POST";

if (async === false) {
params["async"] = async;
}

if (content) {
params["data"] = JSON.stringify(content);
}

return jQuery.ajax(params);
},

getTodo : function(id) {
var index, todo;

jQuery.each(this.todoModel.getProperty("/"), function(i, t) {
if (t.id === id) {
index = i;
todo = t;
}
});

return {
index : index,
todo : todo
};
}

});
поэтому функция initToDoModel вызывается каждый раз, когда страница загружается, получает данные из базы данных, сопоставляет их с объектом JSONModel. Затем, когда я нажимаю кнопку «Добавить» на своей странице, вызывается функция addToDo, и ей необходимо обновить кэшированную модель JSONModel, которая на данный момент не определена.

Я новичок в JavaScript, поэтому, возможно, кто-нибудь сможет объяснить, что там происходит.

Подробнее здесь: https://stackoverflow.com/questions/201 ... -functions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»