LiveView가 다시 컴파일하려고 할 때이 오류가 계속 발생합니다. LiveView의 작동 방식에 대해 누구나 알 수 있습니까? "Alloy.Globals.layout.activityList"객체가 존재하지만, LiveView는 Alloy Globals가 존재하지 않는 코드의 일부만을 다시 컴파일합니까?Appcelerator Studio LiveView 재 컴파일 오류
[ERROR] : Script Error {
[INFO] : {
[ERROR] : column = 36;
[ERROR] : line = 28;
[ERROR] : message = "undefined is not an object (evaluating 'Alloy.Globals.layout.activityList')";
Appcelerator의 "Movies"예제 응용 프로그램은 Alloy.js의 레이아웃 객체를 갖는 것과 동일한 논리를 사용합니다. 정확히 똑같은 일을하고있는 Im, 그러나 그 엉망진창 upp는 10 번 중 8 번 정도를 다시 컴파일합니다.
/**
* 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();
});
내가 콜백 후 라이브 뷰를 닫고 새로 시도 할 때 실행하려고하는 것 같아요, 따라서 컴파일러 오류. 성공적으로 다시로드 SO
[INFO] : [LiveView] Reloading App
[INFO] : Login win close
[INFO] : UI SHUTDOWN COMPLETE. TRYING TO RESUME RESTART
에 windoew.close 이벤트 결과에 콜백을 제거, 완전히 다른 컨트롤러의 close 이벤트에 대한 콜백이 물건을 할 수있는 잘못된 방법을 제공하고있다?
** calculateElementDimensions ** 메소드의 ** layout ** 변수에 ** activityList **의 키 - 값 쌍이 포함되어 있습니까? –
이것은 미묘한 코드 오류이므로 원본 코드를 게시하십시오. 그러면 오류를 찾도록 도와 드리겠습니다. –
그것은 않습니다, 그리고 가치가 정상적인 "실행"프로젝트를 할 때 응용 프로그램을 통해 작동하지 않습니다. alloy.js의 코드를 포함하고 Movies 예제 앱이 아닌 위 코드를 업데이트했습니다. –