javascript - 类型错误 : Cannot read property 'bind' of undefined using ng-cropper directive

标签 javascript jquery angularjs angularjs-directive

我收到TypeError: Cannot read property 'bind' of undefined.当我尝试加载 ng-cropper 指令时,它是cropper javascript 图像裁剪库的 Angular 绑定(bind)。我不完全确定哪些代码可能与显示最相关,但这是指令的上半部分:

angular.module('ngCropper', ['ng'])
.directive('ngCropper', ['$q', '$parse', function($q, $parse) {
  return {
    restrict: 'A',
    scope: {
      options: '=ngCropperOptions',
      proxy: '=ngCropperProxy', // Optional.
      showEvent: '=ngCropperShow',
      hideEvent: '=ngCropperHide'
    },
    link: function(scope, element, atts) {
      var shown = false;

      scope.$on(scope.showEvent, function() {
        if (shown) return;
        shown = true;

        preprocess(scope.options, element[0])
          .then(function(options) {
            debugger;
            setProxy(element);
            element.cropper(options);
          })
      });

      function setProxy(element) {
        if (!scope.proxy) return;
        var setter = $parse(scope.proxy).assign;
        setter(scope.$parent, element.cropper.bind(element));
      }

setter(scope.$parent, element.cropper.bind(element)); 上引发错误setProxy() 中的行功能。

因为cropper显然元素变量上未定义。什么会导致这种情况呢?我不是 Angular Directive(指令)方面的专家,但我想如果标签是这样设置的,它应该可以很好地解决?

奇怪的是,它在演示应用程序中确实解析得很好,并且我的代码反射(reflect)了相同的设置!我唯一的猜测是我可能使用的另一个模块可能会产生干扰?我不愿意把它们全部拿出来,但可能归结为这一点。

我的模块声明为: angular.module('app', [ 'ui.router', 'ngMessages', 'ngSanitize', 'LocalStorageModule', 'angular.filter', 'flow', 'ng-sortable', 'focus-if', 'ngCropper', 'controllers', 'services', 'directives', 'filters'])

我引用了这个演示来了解我所做的 - https://github.com/koorgoo/ngCropper/tree/master/demo

我想,

  1. “cropper”应在什么基础上解决? (所以我知道要检查什么)
  2. 您能发现我的代码有任何明显的问题吗?

最佳答案

在加载依赖项时,您需要保持精确的顺序,并且应先加载 jQuery,然后再加载 AngularJS 和其他内容,如示例 HTML here 中所示。 .

<script src="../bower_components/jquery/dist/jquery.min.js"></script>
<script src="../bower_components/angular/angular.min.js"></script>
<script src="../bower_components/cropper/dist/cropper.js"></script>
<link href="../bower_components/cropper/dist/cropper.css" rel="stylesheet">
<script src="../ngCropper.js"></script>

关于javascript - 类型错误 : Cannot read property 'bind' of undefined using ng-cropper directive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34760516/

相关文章:

javascript - AngularJS 的初始加载微调器

javascript - 用于显示和编辑数据的文本框

javascript - 为什么我的 "el"在 Backbone 中不起作用?

css - Angular-cli 构建生成的 CSS 未在 DOM 中解释

javascript - 无法在 AngularJS 中使用手动 Bootstrap 对应用程序进行单元测试

javascript - 带参数的 WebApi 404 - 通过 javascript GET 调用

javascript - 查找最近/下一个 div

javascript - 滑动侧边栏菜单在 chrome 中不起作用

javascript - 如何隐藏 Div 填充直到可见?

JAVA REST jersy + Eclipse + MYSQL 插入数据到数据库