javascript - 绑定(bind) AngularJS 值来调用现有的 JavaScript 函数

标签 javascript angularjs

我有一些需要调用的现有 JavaScript。我现有的功能称为“confirmDelete”。为了演示起见,缩短的版本如下所示:

function confirmDelete(orderId) {
  return confirm('Are you sure you want to delete Order #"' + orderId + '"?');
}

此功能还有更多功能。不管怎样,我试图像这样调用这个函数:

<a href="~/order/delete/{{order.Id}}" onclick="return confirmDelete('{{order.Id}}');">delete order</a>

我的其他绑定(bind)正在运行。但是,我不知道如何将订单 ID 传递给我现有的 JavaScript 函数。我该怎么做?

谢谢!

最佳答案

您可以注入(inject)$window:

.controller('ExampleController', ['$scope', '$window', function($scope, $window) {
    $scope.window = $window;
});

然后你可以这样做:

<a href="~/order/delete/{{order.Id}}" ng-click="window.confirmDelete(order.Id);">delete order</a>

或者您可以添加

$scope.confirmDelete = function(id) {
    return window.confirmDelete(id);
}

然后你可以这样做:

<a href="~/order/delete/{{order.Id}}" ng-click="confirmDelete(order.Id);">delete order</a>

或者您可以为任何全局函数创建传递方法:

$scope.callGlobal(fn, params) {
    if (!angular.isArray(params)) {
        params = [params];
    }
    return window[fn].apply(window, params)
}

它接受函数名称和一组参数(或者,如果只有一个参数,您可以只传递该参数),然后您就可以执行以下操作

<a href="~/order/delete/{{order.Id}}" ng-click="callGlobal('confirmOrder', order.Id);">delete order</a>

关于javascript - 绑定(bind) AngularJS 值来调用现有的 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26638372/

相关文章:

javascript - 如何使 jquery 插件与 angularJS 一起运行

javascript - Jasmine/Angular.js $scope 在加载 Controller 上未定义

javascript - 使用纯 javascript 拖放并再次拖动

javascript - 上传到 Google 脚本 HTML 时,Google 脚本不显示 jQuery 布局

javascript - 如何从已注册的事件发送 JavaScript 对象?

javascript - 了解 BackboneJS

javascript - 使用 AngularJS 限制文本区域中的单词

jquery - AngularJS - 如何获取文档中元素的顶部和左侧位置的偏移量

javascript - 在对象类上实现 jquery 作用域的最佳方法?

java - 使用 AngularJS 时 Java Web 框架的必要性