我试图在控制器内部设置一个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>
角度控制器(已更新)
(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;
};
}
})();
我在控制器中还有一些其他代码可以处理我创建的服务,但是为了简单起见,我将其排除在外,仅具有ngClipboard的基本知识。
我还尝试了将
ngClipboard
注入控制器的许多不同方式,但似乎不起作用。谢谢你的帮助!(注意:我在HTML中包含了
clipboard.min.js
和ngclipboard.min.js
)编辑(已解决)
的HTML
<div ngclipboard data-clipboard-text="COPIED TEXT HERE!" class="button tiny">Copy Dial-in</div>
控制者
Left it alone, no "ngclipboard" stuff here
app.js(新功能-主角度文件)
angular.module('monitorApp', ['ngRoute','ngclipboard']);
因此,将新添加的['ngclipboard']添加到主文件中而不是添加到控制器后,该应用才能正常运行。之前,该应用程序将加载,没有错误,但整个页面将为空白。特别感谢Shannon的帮助。
最佳答案
确保像这样正确地将源包括在主体底部
<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>