【问题标题】:angular-uploadcare $parse undefined errorangular-uploadcare $parse 未定义错误
【发布时间】:2015-05-22 08:59:47
【问题描述】:

实现 angular-uploadcare 模块,可以在 here 找到。

似乎可以工作,但 Chrome 给出了第 34 行 $parse 未定义的错误。如何解决这个问题?

我已经粘贴了下面的代码。

/**
 * @ngdoc directive
 * @name angular-uploadcare.directive:Uploadcare
 * @description Provides a directive for the Uploadcare widget.
 * # Uploadcare
 */
angular.module('ng-uploadcare', [])
  .directive('uploadcareWidget', function () {
    return {
      restrict: 'E',
      replace: true,
      require: 'ngModel',
      template: '<input type="hidden" role="ng-uploadcare-uploader" />',
      scope: {
        onWidgetReady: '&',
        onUploadComplete: '&',
        onChange: '&',
      },
      controller: ['$scope', '$element', '$log', function($scope, $element, $log) {
        if(!uploadcare) {
          $log.error('Uploadcare script has not been loaded!.');
          return;
        }
        $scope.widget = uploadcare.Widget($element);
        $scope.onWidgetReady({widget: $scope.widget});
        $scope.widget.onUploadComplete(function(info) {
          $scope.onUploadComplete({info: info});
        });
        $scope.widget.onChange(function(file) {
          // add data binding for hidden inputs
          $scope.$apply(function () {
            $parse($attrs.ngModel).assign($scope.$parent, $element.val());
          });
          $scope.onChange({file: file});
        })
      }]
    };
  });

【问题讨论】:

标签: javascript angularjs uploadcare


【解决方案1】:

这似乎是 0.1.2 版本中的一个错误。要修复该问题,请将控制器签名更改为:

controller: ['$scope', '$element', '$attrs', '$parse', '$log', function($scope, $element, $attrs, $parse, $log) {

【讨论】:

  • 谢谢!这很有趣,实际上我已经在控制器中更改了该行,因为我认为 $attrs 丢失或拼写错误或类似的东西,但我没有想到要添加 $parse。谢谢 - 很棒的模块!
  • 请考虑使用来自 PR 的版本,因为它修复了该问题并稍微改变了行为 (E -> A)
猜你喜欢
  • 1970-01-01
  • 2019-01-11
  • 1970-01-01
  • 2020-02-15
  • 2019-04-30
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 2019-04-18
相关资源
最近更新 更多