2014-03-27 99 views
1

代碼:爲什麼我的contenteditable div的內容消失了?

post_page.js:

Template.postPage.events({ 
// Updating a post 
'submit form': function(e) { 
    e.preventDefault(); 

    var post = { 
     title: $(e.target).find('[name=title]').val(), 
     content: $(e.target).find('[name=content]').val() 
    }; 

    Posts.update(this._id, {$set: post}); 
    }, 

    'click .move-up': function(e) { 
    // Moving up a post 
    e.preventDefault(); 

    var prevPost = Posts.findOne({position: this.position - 1}); 

    if (prevPost) { 
     Posts.update(prevPost._id, {$set: {position: prevPost.position + 1}}); 
     Posts.update(this._id, {$set: {position: this.position - 1}}); 
    } 
    }, 

(...) 

Template.postPage.rendered = function() { 
    // Plugin to turn the text area into a contenteditable div 
    var editor; 
    $(function() { 
    editor = new Simditor({ 
    textarea: $("#input-content"), 
    placeholder: "...", 
    pasteImage: true, 
    toolbar: ["title", "bold", "italic", "underline", "link", "image", "indent", "outdent"], 
    upload: { 
     url: "/upload" 
    } 
    }); 

post_page.html:

<template name="postPage"> 
    <div class="posts"> 
    <div class="post"> 
     <div class="post-content"> 
     <span>title: {{title}}, position: {{position}}</span> 
     <a class="move-up" href="javascript:;">Move Up</a> 
     <a class="move-down" href="javascript:;">Move Down</a> 
     <a href="{{pathFor 'postPage'}}">See Post</a> 
     <a class="save-file" href="javascript:;">Save Post</a> 
     </div> 
    </div> 
    </div> 

    <form class="form" role="form"> 
    <div class="form-group"> 
     <label for="exampleInputEmail1">Title</label> 
     <input name="title" type="text" class="form-control" id="exampleInputEmail1" placeholder="Enter email" value="{{title}}"> 
    </div> 
    <div class="form-group"> 
     <label for="exampleInputPassword1">Content</label> 
     <textarea name="content" class="form-control" rows="3">{{content}}</textarea> 
    </div> 
    <button type="submit" class="btn btn-default submit">Submit</button> </form> </template> 

是單頁的應用程序,一切工作,但由於某種原因的內容如果我不是move up a post,那麼contenteditable div消失當前顯示(在textarea的內容仍然和它回來,如果我重新渲染頁面):

enter image description here

可能是什麼造成的?如何解決它?

回答

1

移動後向上/向下通過模板完全重新渲染,我懷疑是因爲simditor預計DOM堅持,它要麼不上rendered或運行不重新運行之前流星的preserve-輸入包已重新填入textarea

您可以嘗試在{{#constant}}包裹(由simditor產生至少textarea,並可能完整DOM)的重新渲染敏感區域來解決這個問題(直到流星得到大火模板引擎上)。如果您知道要保留的確切DOM元素,則還可以使用preserve to prevent them from being re-rendered

相關問題