2014-04-30 55 views
0

我正在嘗試在Angular應用中使用Angular-UI TinyMCE指令。用Angular-UI卡住TinyMce

會發生什麼是,我查詢一個端點,它返回一個對象數組。我有一個函數,然後將其轉換爲一個長字符串與HTML標籤。然後,這些數據被設置爲$scope.tinymceModel

這一切工作正常。我可以console.log($scope.tinymceModel)及其正確的數據。

的問題是HTML解析函數需要返回終點後,查詢運行。所以我調用了.success()回調函數。由於某種原因,當我在回調中設置$scope.tinymceModel時,TinyMCE指令忽略它。即使我使它成爲$scope.tinymceModel = 'test',但如果我將$scope.tinymceModel = 'test'放置在回調之外,它顯示在tinymce中就好了。

這告訴我,因爲當TinyMCE的指令被加載某些原因,它需要tinymceModel已經被填充數據。我不確定我如何解決這個問題。

這也告訴我,我可能在此之後有另一個問題。 TinyMCE的下一個任務是用戶可以編輯文本,點擊一個按鈕,應用程序將發送一個POST內部更新的信息tinymceModel如果這是一個普通的文本框,它會很簡單,因爲數據綁定。不過看起來TinyMCE在數據綁定方面表現不佳。

任何想法?

回答

0

把它弄出來,這個問題與TinyMCE指令中的一個錯誤有關。默認情況下沒有設置優先級。將其設置爲1或更高的值可以修復它。看來目前版本的Ui-TinyMCE指令有這個固定的版本,但不到一個月前我拉下來的版本並沒有修復。

0

我已經嘗試重建你描述(代$ HTTP與$超時)無濟於事。這是我的解決方案,它似乎工作得很好。

HTML:

<div ng-controller="MainCtrl"> 
    <textarea ui-tinymce="" class="form-control" ng-model="someHtml"></textarea> 
</div> 

的JavaScript:

angular.module('testTinymceApp') 
    .controller('MainCtrl', function ($scope, $timeout) { 
    $timeout(function() { 
     $scope.someHtml = '<h1>HELLO THERE</h1>' 
    }, 7000); 

    // This does the same thing with an XHR request instead of timeout 
    // $http.get('/some/data/').success(function(result) { 
    // $scope.someHtml = '<h1>HELLO THERE</h1>' 
    // }); 
    }); 

我想,也許你可以用自己的應用程序相比如何?我知道這個事實,這與XHR請求一起工作。我在使用我認爲是相同的工作流程的工作中構建了CMS。

在這個片段中,someHtml屬性也將被窩裏有效的HTML,所以它發送回來POST請求應該是非常容易的。

如果這還不夠,請提供進一步解釋。

+0

嗯,這似乎不適用於我。基本上看來,如果'scope.tinymceMOdel ='test';'定義在控制器的根級以外的任何地方,它都不起作用。 如果我將您的代碼複製並粘貼到我的控制器中(並更新模型名稱當然),它仍然不起作用。思考? –

+0

在這一點上,我將不得不更多地瞭解您的應用程序。你確定你在textarea上設置了'ng-model'屬性嗎? – Mike

+0

當然可以。再次,我可以在TinyMCE中顯示內容沒有問題。但是,如果我在回調(或$超時)內設置ng模型,TinyMCE將忽略這些更改。下面是一個片段標記:''textarea ui-tinymce ng-model =「tinyMCEModel」>'Controller:'$ scope.apiCall = Api.query(function(){$ scope.tinyMCEModel ='test'}); ' –