2013-05-21 5 views
0

내 durandal 기반 SPA에서 Webshims 라이브러리를 사용하려고합니다. WebShims lib 웹 사이트, 사용자 정의 modernizr, jquery 및 polyfill에 대한 지침을 따릅니다. 모든 것은 뷰에서 녹아웃 또는 듀란 털 전환으로 컨트롤이 동적으로로드되지 않는 한 훌륭합니다. Webshims의 웹 사이트를 통하지durandal updatePolyfill이 포함 된 Webshims lib

, 그것을 조작 방법 향상된 대응 webshims 대신 "정상"JS/jQuery를 조작 방법을 사용하는 플러그인 스크립트 또는 프레임 워크를 사용하는 경우이

, 같은 언급 새로운 HTML5 컨텐츠를 생성하는 (예 : .html 중에서() 대신 .htmlPolyfill()), 방법 .updatePolyfill()는 동적 콘텐츠 polyfill하는 데 사용할 수 있습니다 내가 최선을 참조하려고

$('#my-dynamic-container').load('ajax/test.html', function(){ 
    $(this).updatePolyfill(); 
}); 

을 이것을 할 장소. 나는 분명히 durandal의 모듈을 만지고 싶지 않습니다. html이로드 될 때 하나를 확장하거나 hook을 가져옵니다. 다른 사람이이 일을하려고합니까? 포인터? 지도? 어떤 제안이라도 환영합니다.

답변

0

Durandal의 viewAttached 라이브 이벤트 (http://durandaljs.com/documentation/Hooking-Lifecycle-Callbacks/)를 시도해 볼 수 있습니다. 요점은 view이 부모 요소에 연결되었지만 반드시 DOM에 연결되는 것은 아닙니다. 이는 updatePolyfill()이 작동하기에 충분하거나 충분할 수도 있습니다.

viewAttached: function (view){ 
    $(view).updatePolyfill(); 
} 
+0

내가이 권리를 이해한다면, 이것은 쉘에서 나온 것입니까? –

+0

Durandal 작성 http://durandaljs.com/documentation/Composition/에서 사용하는 모든 모델에서이 설정을해야 할까 봐 걱정됩니다. 현재 사용중인 유일한 파일이 shell.js라면 yes입니다. – RainerAtSpirit

+0

main.js에서 viewModelBinder.afterBind에 실제로 추가했습니다. 잘 작동하는 것 같습니다. 내가 볼 수있는 유일한 문제는 바인딩하는 데 오랜 시간이 걸리는 것입니다. –

0

그냥 참고 : 당신이 동적으로 부모보기 1 단계 2 단계 3 단계에서 사물을 변경 "마법사"스타일에 아이 뷰가있는 부모 뷰를 사용하는 경우 ...이 때문에 작동하지 않습니다 viewAttached()는 부모에 한 번만 발생합니다 ... 불행히도 자식 뷰의 viewAttached()는 DOM이 만들어지기 전에 실행됩니다 (중단을 넣음). 자식에 DOM이 없다는 것을 물리적으로 볼 수 있음 viewAttached()

이것은 약간의 문제입니다 : (

내가 사용할 수있는 유일한 해결책은 사용자 정의 KO 요소를 바인딩하는 것이 었습니다. d 사용자 지정 javascript를 실행하여 해당 바인딩 내에서 실행하지만 여전히 문제입니다.