javascript - 将 UI-Bootstrap Modal 与 Angular-Fullstack 和 ES6 结合使用

标签 javascript angularjs ecmascript-6 angular-ui-bootstrap angular-fullstack

我想使用 ui-bootsrap ModalAngularJS Fullstack Generator & ES6,但它不起作用。 我想选择一个项目,单击“编辑”并在大型模态中编辑项目。但我无法打开模式。

在控制台中,我收到此错误消息:

"Error: $modal is not defined"

我的项目 Controller 看起来像这样:

'use strict';

(function() {

  class ProjectCtrl {

    constructor(Project, $modal, $log) {
      this.project = Project;
      this.projects = [];
      this.getAllProjects(Project);
      this.$modal = $modal;
      this.log = $log;
    }

    // Open a modal window to Update a single Project
    modalUpdate(size, selectedProject) {
      var modalInstance = $modal.open({
        templateUrl: 'app/project/project-edit.modal.html',
        controller: function ($scope, modalInstance, aProject) {
          $scope.project = aProject;
        },
        size: size,
        resolve: {
          aProject: function () {
            return selectedProject;
          }
        }
      });

      modalInstance.result.then(function (selectedItem) {
        this.selected = selectedItem;
      }, function () {
        $log.info('Modal dismissed at: ' + new Date());
      });
    };
  }

angular.module('projectApp')
    .controller('ProjectCtrl', ProjectCtrl);
})();

app.js 看起来像这样:

'use strict';

angular.module('projectApp', [
  'projectApp.constants',
  'ngCookies',
  'ngResource',
  'ngSanitize',
  'ui.router',
  'ui.bootstrap' 
])
  .config(function($urlRouterProvider, $locationProvider) {
    $urlRouterProvider
      .otherwise('/');

    $locationProvider.html5Mode(true);
  });

打开模态框的按钮:

<button type="button" class="btn btn-default btn-xs pull-right" ng-click="ProjectCtrl.modalUpdate('lg', project)"><span aria-hidden="false"></span> Edit</button>

我的猜测是,在 ProjectCtrl 中,我以某种方式 $inject 'Project'、'$modal' 和 '$log',但我不知道如何以及在何处。

最佳答案

我用另一种方式解决了 Modal 问题,因为 UI Bootstrap 似乎在 ES6 中不起作用。至少现在不是。

我使用了模态服务 here对于 Angular-Fullstack。

这是一个带有删除模式的简单示例:

'use strict';

(function() {

class AdminController {
  constructor(User, Modal) {
    // Use the User $resource to fetch all users
    this.users = User.query();
    this.modal = Modal;
  }

  delete(user) {
    var deleteConfirmationModal = this.modal.confirm.delete((user) => {
        user.$remove();
        this.users.splice(this.users.indexOf(user), 1);
    });

    deleteConfirmationModal(user.name, user);
  }
}

angular.module('sampleApp.admin')
  .controller('AdminController', AdminController);

})();

这是模态框的样子:

enter image description here

关于javascript - 将 UI-Bootstrap Modal 与 Angular-Fullstack 和 ES6 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37309928/

相关文章:

javascript - 视频没有开始播放,而是抛出 DOMException

javascript - TestCafe ClientFunction TypeError 错误,因为文档未定义

php - 从安全网站获取特定数据

javascript - 带有 API 和 MONGOOSE 的简单 Web SPA(ID 问题)

javascript - 如何将输入值绑定(bind)到 Angular js 中的 $scope 对象?

javascript - 自执行箭头函数

javascript - 少于5秒钟的html5音频mp3文件将无法播放()

javascript - 迭代 ul 的所有项目并使用 ajax 调用插入数据库

javascript - 将 JQuery 插件变成 AngularJS 指令?

angularjs - es6 相当于 angular.extend(this, object)