2011-09-13 2 views
3

안녕하세요. 시간을내어 미리 감사드립니다.간단한 예에서 Sammy.js + Mustache가 오류를 표시합니다. haystack.indexOf가 함수가 아닙니다.

저는 Sammy.js + Mustache를 실험하고 있습니다. 나는 그들의 GitHub의 사이트에서 새미와 콧수염 파일을 찍은

<html> 
    <head> 
     <script type="text/javascript" src="jquery-1.6.3.js"></script> 
     <script type="text/javascript" src="sammy.js"></script> 

     <script type="text/javascript" src="mustache.js"></script> 
     <script type="text/javascript" src="sammy.mustache.js"></script> 

     <script type="text/javascript" src="application.js"></script> 
    </head> 
    <body> 
     <div id="main"> 

     </div> 

    </body> 
</html> 

: 그래서, 나는이 있어야 모든 것을 포함하는 HTML 파일을 만들었습니다. application.js에서

은 단순히있다 :

$(function() { 
    var app = $.sammy('#main', function() { 

     this.use('Mustache','ms'); 

     var search = {}; 

     this.get('#search', function() { 
      var ctx = this; 
      ctx.load('data/server.json') 
       .then(function(server) { 
        ctx.render('searchForm.ms', server); 
       }); 
     }); 
    }); 

    app.run(); 
}); 

searchForm.ms 매우 간단한 콧수염의 템플릿입니다.

json을 올바르게로드 한 다음 템플릿을로드하지만 Document 인스턴스를받습니다. 이 문서 인스턴스를 문자열 대신 Mustache에 전달하므로 haystack.indexOf is not a function으로 실패합니다. haystack은 문자열이 아니고 문서이기 때문입니다.

또한 searchForm.msearchForm.txt으로 변경하려고 시도했지만 동일한 오류가 발생했습니다. Firefox의 최신 버전 인 file:// URL에 있습니다.

그러나이 예제는 너무 간단해서 실패하지 않아야합니다. 나는 어디가 잘못 됐어?

+0

콧수염과 jquery를 사용하여 같은 오류가 발생했습니다. searchForm.ms 템플릿의 내용을 게시 할 수 있습니까? –

답변

2

최신 jQuery 버전 (1.6 이상) 및 브라우저 구현과 관련이있는 것으로 보입니다. 나는 최신 버전의 크롬 브라우저 (14.0.8 ....)를 사용하고 있으며, Sammy 프레임 워크의 로직이 문자열을 기다리는 동안 템플릿을로드하는 중에 Success 콜백이 Document 객체를 반환하고 있습니다. jQuery 1.4.2 버전에서이 호출에 의해 반환 된 유형은 동일한 브라우저 버전의 문자열 유형입니다. 나는이 변화가있는 경우 확실하지 않다가 '텍스트'

dataType: is_json ? 'json' : 'text', 

에 null을 대체 고정

dataType: is_json ? 'json' : null, 

: 스택을 통해 걷기

내가 Sammy.js 라인 1499에서 문제를 발견 옳은. 하지만이 정보가 유용 할 수 있기를 바랍니다.

1

서식 파일이 제대로로드되지 않거나 다른 라이브러리가 문자열 대신 개체를 전달하고 있습니다.

Mustache.to_html({}, {}, {}); 

같은 오류가 발생합니다.

+0

예, 제가 말했듯이 "건초 더미는 문자열이 아니라 문서입니다." Sammy에게 패치를 적용 해 보았습니다 .Mustache는 XMLDocument로 간주되며 문자열의 경우에는 직렬화됩니다. 그러나 나는이 열린 원인을 지키고 있었다. 나는 (우리) 뭔가 잘못하고 있다고 생각하지만, 아마도이 시점에서 버그가있다. –

+0

아마 Sammy의 버그 –

관련 문제