2012-02-29 8 views
0

이 처리기는 eval 함수의 $ page 매개 변수가 좋지 않으므로 요소 목록 뒤에 "missing"오류가 표시됩니다.이 매개 변수는이 매개 변수를 통해 전달됩니까?jquerymobile eval with object parameter missing] 요소 목록 뒤

$('div[data-role="page"]').live('pageinit pagebeforeshow pageshow pagebeforehide pagehide', function (event, ui) { 
    var $page = $(this); 
    var type = event.type.replace('page', 'Page').replace('init', 'Init').replace('before', 'Before').replace('show', 'Show').replace('hide', 'Hide'); 
    eval('Controller.Method.' + type + '(' + $page + ')'); 
}); 

답변

1

당신은 $page을 강요하고하면은 jQuery를 객체이기 때문에 꽤 작업을 수행 문자열의 일부가 될 수 있습니다. 문자열은 [object Object]이 될 것이므로 jQuery 객체에 대한 더 나은 문자열 표현이 없기 때문입니다.

정확히 으로을 사용하지 않고 eval을 사용하는 경우입니다. 이 방법이 효과적이고 깨끗하며 안전합니다.

Controller.Method[type]($page); 
+0

와우 감사합니다! 사각 팔걸이를 사용할 수 있다는 것을 결코 알지 못했습니다. 나는 그것에 대해 더 자세히 알고 싶다. – Baconbeastnz

+0

@Baconbeastnz : 그것은별로 환상적이지 않다. 'a.b'는'a [ 'b']'와 같습니다 - 후자의 경우에는 (예를 들어'a [variable]'와 같은) 변수를 사용할 수도 있습니다. 이것은 첫 번째 방법으로는 불가능합니다. – pimvdb

+0

사악한, 고마워! – Baconbeastnz