Постоянно получать эту ошибку, когда LiveView пытается перекомпилировать. Может ли кто-нибудь пролить свет на то, как работает LiveView? Объект «Alloy.Globals.layout.activityList» существует, но, возможно, LiveView перекомпилирует части кода, в котором не существует сплавов Globals.Appcelerator Studio LiveView recompile error
[ERROR] : Script Error {
[INFO] : {
[ERROR] : column = 36;
[ERROR] : line = 28;
[ERROR] : message = "undefined is not an object (evaluating 'Alloy.Globals.layout.activityList')";
Приложение примера «Фильмы» от Appcelerator использует ту же логику наличия объекта компоновки в Alloy.js. Я делаю то же самое, но его беспорядок upp перекомпилирует около 8 из 10 раз.
/**
* Calculate element dimensions for given screen size
* @param {Object} size containing width and height properties
*/
Alloy.Globals.calculateElementDimensions = function(size) {
var layout = {};
layout.device = {};
layout.device.width = size.width;
layout.device.height = size.height;
// lists
layout.activityList = {};
layout.activityList.cell = {};
layout.activityList.cell.width = size.width;
layout.activityList.cell.height = 60;
layout.activityList.cell.spacing = 1;
layout.activityList.cell.dateView = {};
layout.activityList.cell.dateView.width = layout.activityList.cell.height;
layout.activityList.cell.dateView.height = layout.activityList.cell.height;
layout.activityList.cell.detailsView = {};
layout.activityList.cell.detailsView.width = (layout.activityList.cell.width - layout.activityList.cell.dateView.width) - 50;
layout.activityList.cell.detailsView.height = layout.activityList.cell.height;
layout.activityList.cell.deleteView = {};
layout.activityList.cell.deleteView.width = size.width * 0.2;
layout.activityList.cell.deleteView.right = (0 - layout.activityList.cell.deleteView.width);
return layout;
};
// Calculate element dimentsions
Alloy.Globals.layout = Alloy.Globals.calculateElementDimensions(Alloy.Globals.Device);
Alloy.Globals.getCalculatedWidth = function(_percentage){
return (Alloy.Globals.Device.width * (_percentage/100));
};
#update
Я думаю, что я мог бы найти, Что вызывая ошибку. Кажется, что это не проблема с запуском нового обновленного кода, а скорее ошибка перед закрытием и обновлением.
**[INFO] : [LiveView] Reloading App**
[INFO] : Login win close
[INFO] : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[INFO] : validateLogInInfo
[INFO] : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[INFO] : UI SHUTDOWN COMPLETE. TRYING TO RESUME RESTART
[INFO] : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[INFO] : RUNNING CODE IN ACTIVITIES.JS
[INFO] : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
**[ERROR] : Script Error {
[ERROR] : column = 36;
[ERROR] : line = 42;
[ERROR] : message = "undefined is not an object (evaluating 'Alloy.Globals.layout.device')";
[ERROR] : stack = "Controller\ncreateController\nController\ncreateController\nvalidateLogInInfo\n";
[ERROR] : }
Alloy.createController('login', {
callback: validateLogInInfo
}).getView().open();**
Ошибка, похоже, связана с тем, что я запускаю код в обработчике события window.close. Например, в одном контроллере я делаю это:
Alloy.createController('login', {
callback: validateLogInInfo
}).getView().open();
И в login.js я сделать:
$.win.addEventListener('close', function(){
log('Login win close');
args.callback();
});
Я предполагаю, что обратный вызов затем пытается бежать, когда LiveView пытается закрыть и обновить, следовательно, ошибка компилятора. Удаление обратного вызова в windoew.close результатов событий в успешной перезагрузки
[INFO] : [LiveView] Reloading App
[INFO] : Login win close
[INFO] : UI SHUTDOWN COMPLETE. TRYING TO RESUME RESTART
SO, обеспечивает обратный вызов в тесном случае другого контроллера полностью неправильный путь, чтобы сделать этот материал?
Вы уверены, что ** макет ** переменная внутри вашего метода ** calculateElementDimensions ** содержит пару ключевых значений ** activityList **? –
Пожалуйста, разместите оригинальный код, так как это тонкая ошибка кода, и мы можем помочь вам найти ошибку. –
Он делает, и значения действительно работают через приложение, когда я выполняю обычный «Запуск» проекта. Я обновил код выше, чтобы содержать свой код от alloy.js, а не от приложения для примера с фильмами. –