2015-07-25 40 views
5

Proste, ponieważ powinno być, nie zadziała, ponieważ kod ten nie może wykryć kodów AngularJS.Udostępnianie w Whatsapp w AngularJS

<a href="whatsapp://send?text={{challenge.challenge_title}}" 
      data-action="{{FullURL}}">Whatsapp</a> 

Czy potrzebuję dyrektywy w tej sprawie? Jeśli tak, co to jest? Ktoś z doświadczeniem w AngularJS, życzliwa pomoc.

Odpowiedz

9

Musisz odkażać kotwicę href wewnątrz fazy config kątowej, która pozwoli na Twój href z prefiksem whatsapp.

Kod

app.config(function($compileProvider){ 
    //other configuration code here 
    $compileProvider.aHrefSanitizationWhitelist(/^\s*(whatsapp):/); 
}) 

Look to SO Question szczegóły.

+0

@ user3362364 czy mógłbyś spojrzeć na moją odpowiedź? –

+0

Przepraszam za to. Testowałem i to nie działało. Spodziewał się, że więcej osób wypowie się i upłynie czas. Dodałem twój kod do app.js i zakończyłem go średnikiem, ale nie działało z następującym błędem (jestem nowicjuszem): ReferenceError: $ compileProvider nie jest zdefiniowany. PS: Mój koleś JS facet jest na urlopie przez kolejne ~ 10 dni – user3362364

+0

Należy pamiętać, że działa idealnie, jeśli bezpośrednio dodaję link, taki jak http://domena.com/ zamiast {{FullURL}} – user3362364

0

Napotkałem problem z niebezpiecznym adresem URL po użyciu $ compileProvider.aHrefSanitizationWhitelist (/^\ s * (whatsapp): /); kiedy czytam kątowe dokumenty, jest napisane:

aHrefSanitizationWhitelist ([regexp]); Pobiera lub zastępuje domyślne wyrażenie regularne używane do umieszczania na białej liście bezpiecznych adresów URL podczas czyszczenia [href]. Sanitization to środek bezpieczeństwa mający na celu zapobieganie atakom XSS za pośrednictwem html links. Dowolny adres URL przypisany do [href] przez powiązanie danych jest najpierw normalizowany i zamieniany w bezwzględny URL. Następnie adres URL jest porównywany z wyrażeniem regularnym aHrefSanitizationWhitelist. Jeśli zostanie znaleziony odpowiednik, oryginalny adres URL zostanie zapisany w domenie. W przeciwnym razie bezwzględny adres URL jest poprzedzony ciągiem "unsafe:", a dopiero potem jest zapisywany w DOM. "Jeśli zostanie znaleziony odpowiednik, oryginalny adres URL zostanie zapisany w domenie. W przeciwnym razie bezwzględny adres URL zostanie poprzedzony ciągiem" unsafe: "i tylko wtedy zostanie zapisany w DOM." Więc dla wszystkich innych adresów URL innych niż WhatsApp, mecz nie zostanie znalezione i zostanie oznaczony jako niebezpieczny

The inny jest sposób, aby dyrektywę

angular.module('shareLink') 
 
    .directive('whatsApp', function(){ 
 
    return{ 
 
     link: function (scope, elem, $attr){ 
 
      elem.on('click', function(){ 
 
       var text = $attr.text; 
 
       var url = $attr.whatsApp; 
 
       var message = encodeURIComponent(text) + " - " + encodeURIComponent(url); 
 
       var whatsapp_url = "whatsapp://send?text=" + message; 
 
       window.location.href = whatsapp_url; 
 

 
      }); 
 
     } 
 
    } 
 
});
<a class="sharelink whatsapp" data-action="share/whatsapp/share" data-text="you can add title or any text here" whats-app="{{url}}"> 
 
         <i class="fa fa-whatsapp "></i> WHATSAPP 
 
        </a>

+0

Proszę napisać to bardziej wyraźnie. – STF