You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AngularJS中通过ng-dblclick触发callto:number事件?

解决AngularJS ng-dblclick触发拨打电话的问题

嘿,我来帮你搞定这个双击拨打电话的需求!你之前写的ng-dblclick="callto:1111"之所以不生效,是因为AngularJS的ng-dblclick指令需要绑定一个可执行的JavaScript表达式,而不是直接写协议链接。下面给你两种靠谱的实现方式,结合ng-repeat一起用:

方式一:直接在ng-dblclick中调用window.open

这种方式最简单,适合快速实现。我们把tel(比callto兼容性更好的标准电话URI协议)包装成window.open的参数,结合ng-repeat遍历电话号码列表:

<!-- 假设你的$scope里有phoneNumbers数组 -->
<div ng-repeat="phone in phoneNumbers" ng-dblclick="window.open('tel:' + phone)">
  {{ phone }}
</div>

小提示:tel是通用的电话协议,几乎所有现代浏览器和移动设备都支持,比callto的兼容性更强哦。

方式二:控制器中封装调用函数(更优雅易维护)

如果后续需要扩展拨打电话的逻辑(比如加日志、错误处理),把逻辑放到控制器里会更便于维护:

第一步:在控制器中定义拨打电话的函数

angular.module('myPhoneApp', [])
  .controller('PhoneListController', function($scope) {
    // 示例电话号码列表
    $scope.phoneNumbers = ['1111', '2222', '3333'];
    
    // 封装拨打电话的函数
    $scope.makePhoneCall = function(phoneNumber) {
      // 可以在这里加额外逻辑,比如打印日志
      console.log('准备拨打:', phoneNumber);
      // 调用电话协议
      window.open('tel:' + phoneNumber);
    };
  });

第二步:在HTML中绑定函数到ng-dblclick

<div ng-controller="PhoneListController">
  <div ng-repeat="phone in phoneNumbers" ng-dblclick="makePhoneCall(phone)">
    {{ phone }}
  </div>
</div>

这样写的好处是逻辑集中,后续要修改拨打电话的行为(比如换成第三方电话SDK),只需要改控制器里的makePhoneCall函数就行,不用动HTML模板。

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 08:44:08