2013-07-09 17 views
5

Snippet'i linky ile filtrelemeyi denerim, giriş artık sanitized/rendered/'html-ized'. yani ben hem etkilerini birleştirmek mümkün istiyorum: http://jsfiddle.net/5uSnj/AngularJS: Aynı yönerge içinde dezenfekte ve linklenebilir mi?

+0

Ben ettik Bu son 30 dakika boyunca oynadı ve linky filtre HTML etiketlerini düzgün bir şekilde değiştirmez gibi görünüyor. Birçok kişi, açısal dokümantasyon sitesinde talkbalk'ta bunun hakkında şikayette bulundu. $ sanitize servisi, $ filtre ve kombinasyon kullanarak denediniz - JS betiğine atıfta angular-sanitise.js ... Filtreyi kullanarak şansınız kalmadı. Belki kendi direktifinizi yaratın? – Lander

+0

Yep, sterilize etmek ve indirmek için yeni bir direktif oluşturdu. İşte çekme isteği, hangi devlerin söylediğini göreceğiz: https://github.com/angular/angular.js/pull/3285 – brooksbp

+0

Bunu kullanmak isterim. Igor'un snippet'i bir bower kurulabilir betiğine dönüştürüldü mi? – meshy

cevap

0

üzgün İgor Minar i cevap olarak ama diğer hizmetler olmadan işlevini yayınına bakın istiyorum:

app.filter('htmlLinky', function($sanitize, linkyFilter) { 
    var ELEMENT_NODE = 1; 
    var TEXT_NODE = 3; 
    var linkifiedDOM = document.createElement('div'); 
    var inputDOM = document.createElement('div'); 

    var linkify = function linkify(startNode) { 
    var i, ii, currentNode; 

    for (i = 0, ii = startNode.childNodes.length; i < ii; i++) { 
     currentNode = startNode.childNodes[i]; 

     switch (currentNode.nodeType) { 
     case ELEMENT_NODE: 
      linkify(currentNode); 
      break; 
     case TEXT_NODE: 
      linkifiedDOM.innerHTML = linkyFilter(currentNode.textContent); 
      i += linkifiedDOM.childNodes.length - 1 
      while(linkifiedDOM.childNodes.length) { 
      startNode.insertBefore(linkifiedDOM.childNodes[0], currentNode); 
      } 
      startNode.removeChild(currentNode); 
     } 
    } 

    return startNode; 
    }; 

    return function(input) { 
    inputDOM.innerHTML = input; 
    return linkify(inputDOM).innerHTML; 
    }; 
}); 

ng-bağlama-html = "html | htmlLinky"

İlgili konular