微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AngularJS:缩小我的指令

我使用指令要求用户在模态中进行操作确认.
它在开发过程中就像一个魅力,但在缩小之后,它就被打破了.
这是我得到的可怕的“$injector:unpr”错误

Error: [$injector:unpr] UnkNown provider: aProvider <- a
...

我认为问题是$scope和$modalinstance被重命名,不应该,但我不知道如何避免这个…

这是指令代码

'use strict';
app.directive('reallyClick',['$modal',function($modal) {
  var modalinstanceCtrl = function ($scope,$modalinstance) {
    $scope.ok = function () {
      $modalinstance.close();
    };

    $scope.cancel = function () {
      $modalinstance.dismiss('cancel');
    };
  };

  return {
    restrict: 'A',scope: {
      reallyClick: '&',item: '='
    },link: function (scope,element,attrs) {
      element.bind( 'click',function() {
        var message = attrs.reallyMessage || 'Are you sure?';
        var modalHtml = '<div class="modal-body">' + message + '</div>';
        modalHtml += '<div class="modal-footer"><button class="btn btn-primary" ng-click="ok()">OK</button><button class="btn btn-warning" ng-click="cancel()">Cancel</button></div>';

        var modalinstance = $modal.open({
          template: modalHtml,controller: modalinstanceCtrl
        });

        modalinstance.result.then(function () {
          scope.reallyClick({item:scope.item}); // raise an error : $digest already in progress
        },function() {
          // modal dismissed
        });
      });
    }
  };
}]);

我用这种方式:

...
<td title="Delete customer">
  <button
    class="btn btn-primary glyphicon glyphicon-trash"
    really-message="Are you really sure to remove customer <i>{{customer.name}}</i> ?" really-click="deleteCustomer(customerId)"
  ></button>
</td>
...

如果它可以提供任何帮助,这些是我在构建阶段使用的模块:

'auto_install','clean:dist','favicons','wiredep','useminPrepare','concurrent:dist','autoprefixer','concat','ngmin','copy:dist','cdnify','cssmin','uglify','filerev','usemin','htmlmin',

这些是我在我的app中注入的模块:

var app = angular.module('smallBusinessApp',[
  'ngSanitize','ngRoute','firebase','ui.bootstrap',]);

解决方法

modalinstance Controller也需要使用依赖注入语法创建,

'use strict';
app.directive('reallyClick',function($modal) {    
  return {
    restrict: 'A',function() {
          // modal dismissed
        });
      });
    }
  };
}]);

ModelInstanceController:

app.controller('modalinstanceCtrl',['$scope','$modalinstance',function ($scope,$modalinstance) {
    $scope.ok = function () {
      $modalinstance.close();
    };

    $scope.cancel = function () {
      $modalinstance.dismiss('cancel');
    };
  }]);

对我来说也是一个问题,不得不将模态的控制器部分分开并像这样做,希望它有所帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐