Как я могу создать модальный список значений, используя только начальную загрузку и угловой с Springboot в качестве бэкэнда? - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь создать общий «Список значений», модал с возможностью поиска с естественным идентификатором и описанием. Мне удалось создать приложение angularjs, которое делает это в SpringBoot, но оно не вызывается как модальное.

Я хочу использовать только angularjs, bootstrap и springboot mvc, я не хочу входить в узел в качестве бэкэнда.

Я попытался следовать инструкциям здесь:

https://www.uibootstrap.net/angular-ui-bootstrap/angular-bootstrap-modal-example-demo/

Но они неполные, фрагменты кода. Я попытался собрать все это вместе и получить следующие три файла:

В этот момент я получаю

Ошибка: [$ инжектор: modulerr] Не удалось создать экземпляр модуля TestApp из-за:

[$ injector: modulerr] Не удалось создать экземпляр модуля ui.bootstrap из-за:

[$ инжектор: номод] Модуль 'ui.bootstrap' недоступен! Вы либо неправильно написали имя модуля, либо забыли загрузить его. При регистрации модуля убедитесь, что вы указали зависимости в качестве второго аргумента.

Я даже не знаю, где это взять ui.bootstrap и инструкции по установке для него говорят использовать npm, я хочу знать, какие файлы используются, и поместить их в мой проект Springboot. Npm и узел не входят в архитектурные планы.

index.html:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Model</title>
<link rel="stylesheet" type="text/css" href="css/bootstrap.css">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.js"></script>
<script src="./app.js"></script>
</head>
<body>
    <div ng-app="TestApp">
        <div class="well">
            <button type="button" class="btn btn-primary" ng-click="openModal()">Click
                to Open Modal Window!</button>
        </div>
    </div>
</body>

app.js:

var modalInstance = '';

var app = angular.module('TestApp', ['ui.bootstrap']);
app.controller('TestCtrl', function($scope, $http) {

    function modalOpenCtrl($scope, payload){
        console.log('fgfdfd');
        $scope.datas = payload;
        console.log($scope.datas);
        $scope.closeModal = function(){
            $scope.cancelModal();
        }
    }

    $scope.openModal = function(task){
        modalInstance = $uibModal.open({
            animation: false,
            templateUrl: './modal_window.html',
            controller: 'modalOpenCtrl',
            scope: $scope,
            size: 'md',
            backdrop: 'static',
            resolve: {
                payload: function () {
                    return {
                        msg_body : 'Hello! I am payload msg',
                        title : 'Hello! Title',
                        body_title : 'UiBootstrap.net'
                    };
                }
            }
        });
    }

    function modalOpenCtrl($scope, payload){
        console.log('fgfdfd');
        $scope.datas = payload;
        console.log($scope.datas);
        $scope.closeModal = function(){
            $scope.cancelModal();
        }
    }
})

modal_window.html:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Model</title>
<link rel="stylesheet" type="text/css" href="css/bootstrap.css">
<script
    src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.js"></script>
<script>
    src="./app.js"
</script>
</head>
<body>

    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal"
            aria-label="Close" ng-click="closeModal()">
            <span aria-hidden="true">&times;</span>
        </button>
        <div class="modal-title">
            <h4>{{datas.title}}</h4>
        </div>
    </div>
    <div class="modal-body log-view">
        <div class="clearfix">
            <h2>{{datas.body_title}}</h2>
            <div>{{datas.msg_body}}</div>
        </div>
    </div>
    <div class="modal-footer model-grey-color">

        <div class="clearfix">
            <div>
                <button class="btn btn-success" ng-click="closeModal()">
                    <i class="ace-icon fa fa-ok"></i> Ok
                </button>
                <button class="btn btn-danger" ng-click="closeModal()">
                    <i class="fa fa-close"></i> Close
                </button>
            </div>
        </div>
    </div>
</body>

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Вам необходимо добавить скрипт начальной загрузки в файл index.html, например <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/2.5.0/ui-bootstrap-tpls.min.js"></script>

0 голосов
/ 25 июня 2019

Кажется, вы не подключили соединение между контроллером и представлением

Ошибка Failed to instantiate module ui.bootstrap due to:, которую вы получаете из-за того, что она не загружена, и вы пытаетесь использовать этот модуль.

Пожалуйста, проверьте ниже для того, как показать модальное использование ui.bootstrap

Сначала необходимо создать правильную структуру каталогов для загрузки файлов при запуске приложения в браузере.

Пример структуры каталогов:

enter image description here

Теперь перейдем к index.html

  1. index.html:

    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Model</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    </head>
    <body>
        <div ng-app="TestApp" ng-controller="TestCtrl">
            <div class="well">
                <button type="button" class="btn btn-primary" ng-click="openModal('abc')">Click
                    to Open Modal Window!</button>
            </div>
        </div>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.js"></script>
        <script src="http://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-1.3.3.js"></script>
        <script src="js/app.js"></script>
    </body>
    </html>
    
  2. app.js

    var modalInstance = '';
    
    var app = angular.module('TestApp', ['ui.bootstrap']);
    app.controller('TestCtrl', function($scope, $http,$uibModal) {
    
        $scope.modalOpenCtrl = function($scope, payload){
            console.log('fgfdfd');
            $scope.datas = payload;
            console.log($scope.datas);
            $scope.closeModal = function(){
                console.log("this is close modal")
                $scope.cancelModal();
            }
        }
    
        $scope.openModal = function(task){
            modalInstance = $uibModal.open({
                animation: false,
                templateUrl: './main_window.html',
                controller: 'modalOpenCtrl',
                scope: $scope,
                size: 'md',
                backdrop: 'static',
                resolve: {
                    payload: function () {
                        return {
                            msg_body : 'Hello! I am payload msg',
                            title : 'Hello! Title',
                            body_title : 'UiBootstrap.net'
                        };
                    }
                }
            });
        }
    
        $scope.cancelModal = function(){
            console.log("this is final called");
            modalInstance.close();
        }
    
    });
    
  3. main_window.html

    <div>
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal"
                aria-label="Close" ng-click="closeModal()">
                <span aria-hidden="true">&times;</span>
            </button>
            <div class="modal-title">
                <h4>{{datas.title}}</h4>
            </div>
        </div>
        <div class="modal-body log-view">
            <div class="clearfix">
                <h2>{{datas.body_title}}</h2>
                <div>{{datas.msg_body}}</div>
            </div>
        </div>
        <div class="modal-footer model-grey-color">
    
            <div class="clearfix">
                <div>
                    <button class="btn btn-success" ng-click="closeModal()">
                        <i class="ace-icon fa fa-ok"></i> Ok
                    </button>
                    <button class="btn btn-danger" ng-click="closeModal()">
                        <i class="fa fa-close"></i> Close
                    </button>
                </div>
            </div>
        </div>
    </div>
    

Вот и все, запустите этот код, и он будет открыт модально при нажатии кнопки

Примечание. Это просто базовая настройка angularjs. Мы все еще можем улучшить этот код, если у вас есть больше функций для построения, таких как маршрутизация, вызовы API, шаблон MVC

Вот блог medium , который объясняет некоторые основные особенности angularjs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...