2015-01-13 247 views
1

我們正在使用jquery 1.9.1和angular 1.2.13。我們使用了一個偉大的wysiwyg編輯器,我們將html保存到數據庫中,並使用jquery append函數加載html,並且工作正常。現在我們試圖將相同的html添加到div標籤(wysiwyg編輯器也使用div)以及它不起作用的附加功能。我們檢查控制檯,並且我們試圖追加的字符串在那裏,同時jquery抓取元素(也在控制檯日誌中檢查過),但是追加函數不起作用。jquery append()不能與angularjs一起工作

PD:我爲我的英語

的HTML

<div data-ng-controller="PreviewCtrl"> 
    <div class="container"> 
     <div id="resumenPreview"></div>         
    </div> 
</div> 

控制器道歉

angular.module('module').controller('PreviewCtrl', ['$scope', '$routeParams', '$location', '$http', 'selectedElement', 
    function ($scope, $routeParams, $location, $http, selectedElement) { 

     $scope.id = $routeParams.id; 
     $scope.mensaje = $scope.id;   
     $scope.imagen = null; 
     $scope.dataImagen = null; 

     //is not working either 
     $('#resumenPreview').append("hola"); 

     $scope.pageLoad = function() {    
      var x = selectedElement.data.Resumen; 
      //This is properly displayed in the console 
      console.log(x); 
      //This too, is displayed in the console log 
      console.log($('#resumenPreview')); 
      // Why this isn't working? I'am clueless 
      $('#resumenPreview').append(x); 
     }; 

     $scope.pageLoad(); 
    }]); 
+2

這不是使用角度的正確方法。你爲什麼將jQuery與它混合?在角度控制器中不應該有任何DOM操作完成 – charlietfl

+0

您是否嘗試過'var x = $ .parseHTML(selectedElement.data.Resumen)'? – scniro

+0

請參閱http://stackoverflow.com/questions/14994391/thinking-in-angularjs-if-i-have-a-jquery-background stat。 – isherwood

回答

0

與angularjs爲解決這個問題納克綁定HTML的工作有必要包括

<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular-sanitize.js"></script> 

和「ngSanitize」添加爲應用程序模塊中的依賴組態。然後只要做@Johannes Reuter發佈的內容。 謝謝大家,問候。

0

我的猜測是有使用id = 「resumenPreview」 多個div。但這顯然是角度處理這種事情的錯誤方式。在控制器中不應該有dom操作 - 指令應該照顧dom相關的東西。把HTML的串入的範圍,讓角處理注入到DOM:

代替$('#resumenPreview').append(x);$scope.resumenPreview = x;

,並在模板中做到這一點:

<div class="container"> 
     <div ng-bind-html="resumenPreview"></div>         
</div> 
+0

我做到了這一點,並在我的控制器中添加了這個$​​ scope.resumenPreview =「

hola

」;,沒有工作 –