2014-11-13 1 views
0

Я пытаюсь добавить кнопку skype в свой проект, используя AngularJS. Вот код:skype uri button in angularjs issue

HTML:

<script type="text/javascript" src="http://www.skypeassets.com/i/scom/js/skype-uri.js"></script> 

<skype-ui id="SkypeButton_Call_1" participants="participants"> 
       </skype-ui> 

AngularJs:

app.directive("skypeUi", function() { 
    return { 
     restrict: "E", 
     template: "<div></div>", 
     replace: true, 
     scope: { 
      participants: "=" 
     }, 
     link: function (scope, element, attrs) { 
      Skype.ui({ 
       "name": "chat", 
       "element": attrs.id, 
       "participants": scope.participants, 
       "imageSize": 32 
      }); 
     } 
    }; 
}); 

Но когда я нажимаю на том, что он открывает окно скайпа и в то же время показывает сообщение об ошибке: «Пожалуйста установить Skype приложение, чтобы выполнить этот вызов или отправить сообщение ». Thogh I aleady имеет скайп, установленный в моей системе. Не могли бы вы рассказать мне, почему это так?

+0

Вы нашли решение для этого? – Rahul

ответ

0

Если бы один и тот же вопрос ... Проблема заключается в том, что skype-uri.js написано довольно некрасиво ...

экспортирует глобальную переменную Skype, но это не пространство имен с общими функциями - это экземпляр объекта, и, как я нашел - этот экземпляр может правильно инициализировать только одну кнопку Skype ... facepalm ...

Чтобы добавить еще один, вы должны снова включить этот сценарий (чтобы создать новый экземпляр этого объекта) или получить конструктор из этого экземпляра и создайте новый, используя его ...

Вот рабочая директива:

app.directive("skypeUi", function() { 
    var TrueSkype = Skype.constructor; 
    return { 
    restrict: 'E', 
    scope: { 
     participants: "=" 
    }, 
    link: function (scope, element) { 
     var btn = null; 
     function removeButton() { 
     if (btn) { 
      btn.remove(); 
     } 
     } 
     scope.$watch('participants', function() { 
     removeButton(); 
     btn = angular.element('<div></div>'); 
     var id = "SkypeButton_Call_" + Math.random(); 
     element.append(btn); 
     btn.attr('id', id); 
     (new TrueSkype()).ui({ 
      "name": "call", 
      "element": id, 
      "participants": participants, 
      "imageColor": "white", 
      "imageSize": 32 
     }); 
     }); 
     scope.$on('$destroy', removeButton); 
    } 
    }; 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^