Angularjs Skype URI" onclick"问题

时间:2014-04-30 07:21:57

标签: javascript jquery angularjs skype skype-uri.js

我正在尝试在网站上实施Skype Button我正致力于使用Angularjs

Skype API提供的代码如下

</script>
<div id="SkypeButton_Call_mike_1">
  <script type="text/javascript">
    Skype.ui({
      "name": "dropdown",
      "element": "SkypeButton_Call_mike_1",
      "participants": ["mike"],
      "imageSize": 32
    });
  </script>
</div>

我正在使用angularjs,因此mike伪来自我的角model(控制器)。

$scope.user.skypePseudo = "mike"

然后当我改变

"participants": ["mike"]

"participants": ["{{user.skypePseudo}}"] 

会抛出此错误

Interpolations for HTML DOM event attributes are disallowed.  Please use the ng- versions (such as ng-click instead of onclick) instead.

错误很明显,这意味着我无法使用 onclick ,而应使用 ng-click

我试图通过onclick替换所有ng.click来修改skype-uri.js,但会收到一些补拙错误。

有人在我面前经历过这个吗?我怎样才能让它发挥作用?

问题可以被问为:有没有办法强制角度接受 onclick

1 个答案:

答案 0 :(得分:4)

我认为实现这一目标的最佳方法是创建一个新指令:

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

所以你可以这样使用;

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

最后在你的控制器中:

$scope.participants = ["mike"];