javascript - 使用 ngClipboard 的 Angular Controller - 错误 : Unknown provider

标签 javascript angularjs

我正在尝试在 Controller 内设置一个 ng-click 事件,以便当用户单击 div 时,该函数会运行并编译一个字符串并将其添加到剪贴板。

但是我收到以下错误:

angular.js:13550Error: [$injector:unpr] Unknown provider: ngClipboardProvider <- ngClipboard <- eventCtrl

HTML

<div class="row">
    <div><div ng-click="vm.copy()" class="button tiny">Copy</div></div>
</div>

Angular Controller (已更新)

(function() {

    angular
        .module('monitorApp', ['ngClipboard'])
        .controller('eventCtrl', eventCtrl);

    eventCtrl.$inject = ['$scope', '$routeParams', 'monitorData', 'ngClipboard'];
    function eventCtrl($scope, $routeParams, monitorData, ngClipboard) {
        var vm = this;

        vm.copy = function() {
            vm.copyjunk = "COPIED crap here!!";
            vm.copyjunk = ngClipboard.toClipboard;
        };
    }

})();

我在 Controller 中还有一些其他代码来处理我创建的服务,但为了简单起见,我将其排除在外,只包含 ngClipboard 的基本要素。

我还尝试了许多不同的将 ngClipboard 注入(inject) Controller 的变体,但它似乎不起作用。感谢您的帮助!

(注意:我已在 html 中包含 clipboard.min.jsngclipboard.min.js)

编辑(已解决)

HTML

<div ngclipboard data-clipboard-text="COPIED TEXT HERE!" class="button tiny">Copy Dial-in</div>

Controller

Left it alone, no "ngclipboard" stuff here

app.js(新! - 主要 Angular 文件)

angular.module('monitorApp', ['ngRoute','ngclipboard']);

因此,将新添加的 ['ngclipboard'] 放入主文件而不是 Controller 中可以让应用程序正常工作。之前,应用程序会加载,没有错误,但整个页面都是空白的。特别感谢香农的帮助。

最佳答案

确保将源代码正确地包含在正文底部

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script src="https://cdn.rawgit.com/zenorocha/clipboard.js/master/dist/clipboard.min.js"></script>
<script src="dist/ngclipboard.min.js"></script>

看起来您只是错过了模块依赖项。

angular.module('monitorApp'), ['ngclipboard']);

不仅如此,您还尝试使用源代码中不存在的名为 ngClipboard 的提供程序。

此 ngclipboard 模块仅使用属性指令。 HTML:

<!-- Target -->
<input id="foo" value="https://github.com/sachinchoolur/ngclipboard.git">

<!-- Trigger -->
<button class="btn" ngclipboard data-clipboard-target="#foo">
    <img src="assets/clippy.svg" alt="Copy to clipboard">
</button>

按下按钮时,这将从输入中复制内容(针对 id)。

在您的情况下,如果您的 vm.copy() 方法仅返回一个字符串,只需执行以下操作:

<button class="btn" ngclipboard data-clipboard-text="{{vm.copy()}}">
    {{vm.copy()}}
</button>

关于javascript - 使用 ngClipboard 的 Angular Controller - 错误 : Unknown provider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38964173/

相关文章:

javascript - Angular 选择中的按键事件?

javascript - 带有嵌套 jsonp 的 Angular 服务

javascript - 在 Internet Explorer 中无法将 DIV 导出为 PDF

javascript - 在 onchange 事件时在 div 标签中显示 Map 值

javascript - 从 map 中移除多边形

javascript - 应用angularjs过滤器后复选框取消选中自身

angularjs - 带有新行中断的水平 ng-repeat(er)

javascript - 如何将谷歌自动完成结果仅限于城市和国家

javascript - 如果循环中的 Else 语句不起作用怎么假设

angularjs - 对 AngularJS ng-repeat 语法感到困惑