模型窗口内的AngularJS范围

AngularJS scope inside model window

本文关键字:AngularJS 范围 窗口 模型      更新时间:2023-09-26

我有一个简单的控制器,它使用$http.get获取一些消息。然后我使用ng repeat在HTML中显示它。但由于某种原因,如果我试图从模型窗口访问它们,它就不起作用。它总是打印第一条消息。

index.html

 <div ng-controller="MessageController as ctrl">
    <ul class="list-group" ng-repeat="message in ctrl.messages">
        <li class="list-group-item">
            {{message.title}}
            <button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#myModal">
               Edit
            </button>
            <div class="modal fade" id="myModal" aria-labelledby="myModalLabel">
                <div class="modal-dialog" role="document">
                    <div class="modal-content">
                        <div class="modal-body">
                            {{message.title}}
                            <label>Title:</label><input ng-model="message.title"/>
                        </div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                            <button type="button" class="btn btn-primary">Save changes</button>
                        </div>
                    </div>
                </div>
            </div>
        </li>
    </ul>
</div>

app.js

var app = angular.module('plunker', []);
var prefix = 'http://jsonplaceholder.typicode.com';
app.controller('MessageController', ['$http', function ($http) {
var $this = this;
$http.get(prefix + '/posts').success(function (response) {
    $this.messages = response;
    return response;
   });
}]);

这是拔毛器http://plnkr.co/edit/ZKyZJV9aYD5AU6kmsMTC?p=preview

问题是,所有模式id="myModal"都使用相同的id。因此,由于html上的搜索将在找到第一个巧合后完成,它将始终向您显示相同的模态。

使用变量id,例如,使用ng-repeat 中的$index

id="myModal_{{$index}}" 

在两个div(iddata-target)上都执行此操作,应该可以正常工作。

这是有效的:

<button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#myModal{{$index}}">
...
<div class="modal fade" id="myModal{{$index}}" aria-labelledby="myModalLabel">

http://plnkr.co/edit/vXbN1FwH4yjb66rLV5qn?p=preview

但在角度中,通过#id寻址任何内容都是非常糟糕的模式