2016-09-12 9 views
0

저는 KO.JS를 사용하고 html 템플릿을 작성하고 있습니다.Knockout.js 템플릿 바인딩 - tinyMCE 함수를 호출하여 미리보기를로드합니다.

html 바인딩에서 미리보기 명령을 호출하여 TinyMCE 미리보기를 표시하려고합니다.

var preview = function (divName) { 
var ID = divName 
    var myEditor = tinyMCE.editors["divName"]; 
    myEditor.execCommand("mcePreview"); 
} 

참고 : 일반적으로

, 이것은 우리가 외부 버튼 클릭에 TinyMCE에 대한 미리보기를 렌더링하는 방법입니다 내가 그렇게 매개 변수로 divName를 전달 TinyMCE에 RTE 여러 된 div 있습니다.

내 문제 영역 :

나는 위의 함수를 사용하여 DIV의 미리보기를 렌더링합니다. 템플릿 스크립트에서 동일한 명령을 호출하려고합니다. 내 내 JS 코드를 작성하는 것이 가능

enter image description here

아닌가 : 또한 아래 스크린 샷에서와 같이 오류가 발생,

<script type="text/html" id="tmplPreviewModal"> 

// Lots of other bindings go here // 

// Below code should bind Tiny MCE RTE Preview to our DIV // 

<div data-bind="html : {'tinymce.get('id': 'myTxtArea').execCommand('mcePreview'); '} "></div> 

</script> 

이 코드 나던 작업 : 아래

내 템플릿 코드 템플릿 바인딩?

var ViewModel = function() { 
    var self = this; 
    //blah 
    self.init = function() { 
     tinyMCE.init({ 
      setup: function(ed) { 
       ed.onChange.add(function(ed, l) { 
        self.preview(tinymce.get('id': 'myTxtArea').getContent()); 
       }); 
      }; 
     }); 
    }; 
    self.preview = ko.observable(); 
}; 


var vm = new ViewModel(); 
ko.applyBindings(vm); 
vm.init(); 
<div data-bind="html : preview "></div> 

: 당신은 jQuery 플러그인처럼 뷰 모델의 초기화 기능을 사용할 수 있습니다

+0

두 번째 빨간색 직사각형에서 ' – madalinivascu

+0

을 제거하십시오. 이것은 또한 오류를 던지고 – user2598808

+0

제안 해주십시오! – user2598808

답변

0

enter image description here

제안하십시오 : 아래 그림과 같이

나는 심지어 JS 기능 preview를 호출 시도 How to use jQuery in a Knockout.js Template?

아니면 플러그인 TinyMCE에 녹아웃 결합

https://github.com/michaelpapworth/tinymce-knockout-binding

+0

init 함수를 사용하는 경우 값을 div에 바인딩하는 방법을 알려주시겠습니까?여기에 HTML 바인딩에 대해 :

+0

나는 내 대답을 바꿨다. 당신은 HTML을 얻고 DIV를 설정하고 싶습니까? 미리보기를 위해? – ArDumez

+0

예, KO.JS에 템플릿을 만들었습니다. 이 템플릿은 미리보기를 렌더링합니다. 그것은 많은 TinyMCE RTE와 드롭 다운 선택된 값, 제목 등등과 같은 다른 정보를 포함 할 것입니다. TinyMCE RTE Preview를 제외하고 내보기 모델에서 모든 것을 표시 할 수 있습니다. – user2598808

0

"html : {'tinymce.get('id': 'myTxtArea').execCommand('mcePreview'); '} "를 사용할 수는 구문 넌센스입니다. 오른쪽은 문자열 값이어야하지만 해시와 같은 curlies가 있지만 키 대신 작은 따옴표가있는 함수 호출을 래핑하는 문자열이 있습니다. (: 또한 콜론해야 쉼표 업데이트) 그래서 당신은

"html : tinymce.get('id', 'myTxtArea').execCommand('mcePreview')"

즉 원하는

내 단순한 추측은 중괄호, 가장 바깥 쪽 따옴표, 그리고 세미콜론, 속하지 않는다는 것입니다 그 execCommand의 결과가 HTML 문자열이면 맞습니다. 하지만 나는 TinyMCE Preview 자체가 DOM을 조작하려고한다고 생각하는데, 이는 사용자 정의 바인딩 처리기가 필요하다는 것을 의미합니다.

+0

나를 고쳐 주셔서 감사합니다. 나는 당신이 제안한 진술을 사용했습니다. 여전히 오류가 발생합니다 : 잡히지 않습니다 SyntaxError : 바인딩을 처리 할 수 ​​없습니다 "template : function() {return {name : 'tmplPreviewModal'}}" 메시지 : 바인딩을 구문 분석 할 수 없습니다. 바인딩 값 : html : tinymce.get ('id': 'myTxtArea'). execCommand ('mcePreview') – user2598808

+0

'get()'호출에서 콜론을 깜빡입니다. 그게 쉼표인가? –