2015-01-20 9 views
1

Durandaljs 2.1 응용 프로그램에서 상당히 교활한 문제가 발견되었습니다.Durandal View가 올바르게로드되지 않는 경우가 종종 있고 항상 축소되었을 때

본질적으로 우리가받은 오류는 404 오류 인 것으로 보입니다. 그러나 약간의 추가 오류 추적을 추가하여 타이밍 오류 인 것으로 나타났습니다. 우리는 찾을 수 없음 경고 및 뷰의 자바 스크립트가 다음 표시되는보기를 얻을 특정보기를로드하려고 할 때

viewEngine.createFallbackView = function (viewId, requirePath, err) { 
    var that = this, 
    message = 'View Not Found. Searched for "' + viewId + '" via path "' + requirePath + '". Error: ' + err.message; 

    return system.defer(function (dfd) { 
     dfd.resolve(that.processMarkup('<div class="durandal-view-404">' + message + '</div>')); 
    }).promise(); 
}; 

을 다음과 같이

우리가 수행 한 수정입니다. 이는 아이폰과 같은 모바일 장치에서 더 흔하게 보일지라도 코드가 축소되지 않은 경우 매우 산발적으로 발생합니다. 이것은 개발 현장에서 발생하지 않습니다.

그러나 한 번 나는 Grunt를 사용하여 javascript를 축소했습니다. 오류는 dev 환경에서 매번 발생합니다. 이것은 내가 가장 교활한 타이밍 오류를 의심하게한다. 다른 사람들이 이런 종류의 문제를 겪어 왔고 우리가 이것을 고칠 수있는 방법에 대한 제안을 받았습니다. 우리는 Durandaljs 2.1을 사용하고 있습니다. 우리가받을

오류 그러나 오류가 별도의보기에서 발생, 양식의 기본 페이지로 이동하면 앱이 항상 잘로드

View Not Found. Searched for "views/stationDetails(router,dataManager){var _this=this;[Javascript ViewModelCode].fail(function(){}).promise.html". 

이다.

이보기의 코드를 다시 검토했습니다. 실제 durandal activate 함수는 문제와 관련이있을 수있는 약속 객체를 반환합니다.

도움을 주신 모든 도움.

나는 더 많은 게임을 했으므로이 게시물과 관련된 더 많은 정보가 있다는 것을 깨달았습니다. 우리는 우리의 viewModels에 타이프 스크립트를 사용하고 있습니다.이 문제는 인스턴스화 된 viewModels 대 싱글 톤 중 하나를 사용하는 것과 관련이 있습니다.

define([],() => { 
    return() => { 
     return new viewModelObject(); 
    }; 
}); 

답변

0

: 우리가 다음 우리가 한 복제 된 뷰 모델을 필요로하는 경우

export class viewModelObject { 

    constructor() { } 
} 


define([],() => { 
    return new viewModelObject(); 
}); 

다음과 같이

그래서 대부분의 경우 우리는 우리가 정의한 싱글 뷰 모델이 나는 전에 이것을 보지 못했다. 버그를 재생산하는 가장 간단한 해결책을 내게 보낼 수 있습니까? 인스턴스화 된 뷰 모델을 사용하는 방식이 불규칙하다고 말할 수 있습니다. 나는 당신이 생성자 함수 자체를 반환 할 것으로 기대한다. 아마도 그것이 문제의 근원입니까?

+0

안녕하세요. 전체 샘플을 블루스 파이어에서 보낸 사람에게 보냅니다. –