使用角度传递的数据更新模态

Updating modal with data passing in angular

本文关键字:数据 更新 模态      更新时间:2023-09-26

角度真的很陌生,但我有这个待办事项列表。我添加了一个模式按钮,我希望任务项在创建的每个模式中更新。由于某种原因,我无法获得模式来显示分配给它的任务项的正确名称。它卡在所有模态的引用索引 0 上。

第一个模态校正

第二模态仍然反映第一

这是 HTML:

<header>
    <ul class="nav nav-tabs">
        <li role="presentation" class="active">
            <a href="#/">Home</a>
        </li>
        <li role="presentation">
            <a href="#/second">History</a>
        </li>
    </ul>
</header>
<center>
    <div>
        <div class="form-group">
            <div class="col-xs-12 col-sm-8 col-md-4 col-lg-4 col-centered" id="nv">
                <div class="row"></div>
                <input ng-model="newItem" ng-keypress="addItem($event)" type="text" class="form-control lead" id="nv" placeholder="Add a grocery.">
            </div>
        </div>
    </div>
</center>
<div id="mainBox">
    <ul class="list-group checked-list-box" id="repeatBox">
        <li class="list-group-item col-xs-12 col-sm-8 col-md-4 col-lg-4 col-centered" id="liBox" ng-repeat="x in displayHold" >
            <input type="checkbox" ng-model="deleted"></input>
            <h7 id="lItem" class="lead" ng-class="{strike: deleted,notActive: deleted}">{{x.item}}</h7>
            <button type="button" class="btn btn-default pull-right" ng-click="rmList(x)">
                <span class="glyphicon glyphicon-trash" id="icon"></span>
            </button>
            <button type="button" class="btn btn-default pull-right" data-toggle="modal" data-target="#myModal">
                <span class="glyphicon glyphicon-plus" id="icon"></span>
            </button>
            <div class="container">
                <div id="myModal" class="modal fade" role="dialog">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="btn btn-default" class="close" data-dismiss="modal">&times;</button>
                                <h4 class="modal-title">{{modalItem(x)}}</h4>
                            </div>
                            <div class="modal-body lead">
                                <p>{{displayHold.x}}</p>
                            </div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </li>
    </ul>
</div>

和 js:

var app = angular.module('app', ['ngRoute']);
app.config(['$routeProvider', function($routeProvider) {
    $routeProvider
        .when('/', {
            templateUrl: 'templates/home.html',
            controller: 'homeCTRL'
        })
        .when('/second', {
            templateUrl: 'templates/second.html',
            controller: 'secondCTRL'
        })
        .otherwise({
            redirectTo: '/'
        });
}]);
//services
//history
app.service('carry', function() {
    var transferAr = [];
    var addList = function(newObj) {
        transferAr.push({
            item: newObj
        });
    };
    var getList = function() {
        return transferAr;
    };
    return {
        addList: addList,
        getList: getList,
    };
});
//home temporary
app.service('hold', function() {
    var holdTransferAr = [];
    var holdAddList = function(newObj) {
        holdTransferAr.push({
            item: newObj
        });
    };
    var holdGetList = function() {
        return holdTransferAr;
    };
    return {
        holdAddList: holdAddList,
        holdGetList: holdGetList,
    };
});
//controllers
app.controller('homeCTRL', ['$scope', 'carry', 'hold', '$log', function($scope, carry, hold, $log) {
    $scope.newItem = '';
    $scope.addItem = function(e) {
        if (e.which === 13) {
            hold.holdAddList($scope.newItem);
            $scope.newItem = '';
        }
    };
    $scope.displayHold = hold.holdGetList();
    $scope.rmList = function(item) {
        //get index of displayHold
        $scope.index = $scope.displayHold.indexOf(item);
        //add it to historylist
        carry.addList($scope.displayHold[$scope.index].item);
        //remove displayHold
        $scope.displayHold.splice($scope.index, 1);
    };
    $scope.modalItem = function(item){
      $scope.index = $scope.displayHold.indexOf(item);
      return $scope.displayHold[$scope.index].item;
  };


}]);
app.controller('secondCTRL', ['$scope', 'carry', function($scope, carry) {
    $scope.controller2Ar = carry.getList();
}]);

第二.html

<header>
    <ul class="nav nav-tabs">
        <li role="presentation">
            <a href="#/">Home</a>
        </li>
        <li role="presentation" class="active">
            <a href="#/second">History</a>
        </li>
    </ul>
</header>
<div id="mainBox">
    <ul ng-repeat="x in controller2Ar" class="list-group" id="repeatBoxAlt">
        <li class="list-group-item col-xs-12 col-sm-8 col-md-4 col-lg-4 col-centered lead strike">
          <center>
            <h7>{{x.item}}</h7>
          </center>
        </li>
    </ul>
</div>

这是索引.html

<!DOCTYPE HTML>
<html ng-app="app">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href='https://fonts.googleapis.com/css?family=Roboto:400,500' rel='stylesheet' type='text/css'>
        <link rel="stylesheet" href="https://bootswatch.com/paper/bootstrap.min.css"/>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
        <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
        <link rel="stylesheet" href="main.css"/>
    </head>
    <body>
        <div ng-view></div>
        <script src="node_modules/angular/angular.min.js"></script>
        <script src="node_modules/angular-route/angular-route.min.js"></script>
        <script src="app.js"></script>
    </body>
</html>

这是因为您的模态没有唯一的 id 和触发器:

{{index}}或唯一标识符添加到模态 ID 和触发器以显示模态。

<header>
    <ul class="nav nav-tabs">
        <li role="presentation" class="active">
            <a href="#/">Home</a>
        </li>
        <li role="presentation">
            <a href="#/second">History</a>
        </li>
    </ul>
</header>
<center>
    <div>
        <div class="form-group">
            <div class="col-xs-12 col-sm-8 col-md-4 col-lg-4 col-centered" id="nv">
                <div class="row"></div>
                <input ng-model="newItem" ng-keypress="addItem($event)" type="text" class="form-control lead" id="nv" placeholder="Add a grocery.">
            </div>
        </div>
    </div>
</center>
<div id="mainBox">
    <ul class="list-group checked-list-box" id="repeatBox">
        <li class="list-group-item col-xs-12 col-sm-8 col-md-4 col-lg-4 col-centered" id="liBox" ng-repeat="x in displayHold track by $index" >
            <input type="checkbox" ng-model="deleted"></input>
            <h7 id="lItem" class="lead" ng-class="{strike: deleted,notActive: deleted}">{{x.item}}</h7>
            <button type="button" class="btn btn-default pull-right" ng-click="rmList(x)">
                <span class="glyphicon glyphicon-trash" id="icon"></span>
            </button>
            <button type="button" class="btn btn-default pull-right" data-toggle="modal" data-target="#myModal{{index}}">
                <span class="glyphicon glyphicon-plus" id="icon"></span>
            </button>
            <div class="container">
                <div id="myModal{{index}}" class="modal fade" role="dialog">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="btn btn-default" class="close" data-dismiss="modal">&times;</button>
                                <h4 class="modal-title">{{modalItem(x)}}</h4>
                            </div>
                            <div class="modal-body lead">
                                <p>{{displayHold.x}}</p>
                            </div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </li>
    </ul>
</div>