Javascript AngularJS可以';t从引导模式窗口传递$index

Javascript AngularJS可以';t从引导模式窗口传递$index,javascript,jquery,html,angularjs,twitter-bootstrap,Javascript,Jquery,Html,Angularjs,Twitter Bootstrap,我的头撞在墙上了。我正在使用ng repeat填充一个表。在每一行中,我有两个按钮,一个用于更新行内容和上载文件。“上载”按钮打开一个引导模式窗口,用户在其中选择文件并单击“提交” submit按钮使用ng click来运行一个使用$index作为参数的函数。但无论选择哪一行,$索引值始终相同 我不明白的是,我在我的更新按钮上使用了完全相同的语法(尽管在模式窗口之外),这很好 HTML: 因此,由ng click触发的函数uploadAttachment($index,type)没有传递正确的索

我的头撞在墙上了。我正在使用ng repeat填充一个表。在每一行中,我有两个按钮,一个用于更新行内容和上载文件。“上载”按钮打开一个引导模式窗口,用户在其中选择文件并单击“提交”

submit按钮使用ng click来运行一个使用$index作为参数的函数。但无论选择哪一行,$索引值始终相同

我不明白的是,我在我的更新按钮上使用了完全相同的语法(尽管在模式窗口之外),这很好

HTML:

因此,由ng click触发的函数
uploadAttachment($index,type)
没有传递正确的索引号。无论在哪一行中单击,它总是通过相同的路径

我省略了一些不相关的代码。如果需要,我可以提供全部

对我遗漏的东西有什么建议吗

编辑:

我已尝试实施DonJuwe的建议

我在控制器中添加了以下内容:

$scope.openModal = function(index) {
var modalInstance = $modal.open({
    templateUrl: 'www.test.xxx/App/uploadModal.html',
    controller: 'riskListCtrl',
    resolve: {
        index: function() {
            return index;
        }
    }
});
};
这是我的模式模板:

 <div class="modal-header">
   <h3 class="modal-title" id="uploadModalLabel">Options</h3>
</div>
<div class="modal-body">
   <h4>Upload Documents</h4>
   <form>
      <div class="form-group">
         <select  data-ng-model="type" class="form-control" id="fileTypeSelect">
            <option value="Policy">Policy</option>
            <option value="SOP">SOP</option>
         </select>
         <br>
         <div class="input-group"> <span class="input-group-btn">
            <input type="file" id="file">
            </span>
         </div>
         <br>
         <button  type="button" class="btn btn-default" data-ng-click="uploadAttachment($index, type)">Upload</button>
   </form>
   </div>
      <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
   </div>
</div>

似乎
$scope.items[index].Id
为空。错误:
无法读取未定义的属性“Id”

模式窗口有自己的作用域。这意味着您需要解析要传递到模态范围的数据。为此,请在modals方法中使用
resolve

在我给你举个例子之前,我想建议对所有表项只使用一个模式。这将允许您保留一个模板,以便轻松使用
id
(现在,您可以为每个无效的表项创建一个模板)。只需调用控制器函数并传递
$index

<button type="button" class="btn btn-primary uploadBtn" data-ng-show="editMode" ng-click="openModal($index)">Upload file  <i class="fa fa-cloud-upload"></i></button>
angular.module('myModule', []).controller('MyModalCtrl', function($scope, index) {
    $scope.index = index;
});
现在,通过注入
索引
,您可以在
MyModalCtrl
的作用域中访问
索引

<button type="button" class="btn btn-primary uploadBtn" data-ng-show="editMode" ng-click="openModal($index)">Upload file  <i class="fa fa-cloud-upload"></i></button>
angular.module('myModule', []).controller('MyModalCtrl', function($scope, index) {
    $scope.index = index;
});

由于您获取的是模型外部的索引值,因此您也可以使用ng单击,然后调用控制器中的函数,并将索引值存储在临时变量中,然后在使用提交按钮时,只需获取另一个变量,并将临时变量的值分配给您的变量。例如:

     <button type="button" data-ng-show="editMode" data-ng-click="editMode = false; updateItem($index)" class="btn btn-default">Save</button>

{{$index}}
也总是一样的吗?不,
{{$index}}
显示正确的数字。您指的是这一行,
$index
是一样的吗<代码>上传是功能
上传附件($index,type)
没有获得正确的索引号。我将编辑我的op以使其更清晰。似乎范围有问题,但没有工作示例不确定
angular.module('myModule', []).controller('MyModalCtrl', function($scope, index) {
    $scope.index = index;
});
     <button type="button" data-ng-show="editMode" data-ng-click="editMode = false; updateItem($index)" class="btn btn-default">Save</button>
$scope.updateItem = functon(index)
{
$scope.tempVar = index;
}

now use the value of tempVar in you function 

 $scope.uploadAttachment = function executeUploadAttachment(index, type) {
var index = tempVar;            //assign the value of tempvar to index
var listname = "Risk Register";
var id = $scope.items[index].Id;
console.log(indexID);
readFile("uploadControlId").done(function(buffer, fileName) {
    uploadAttachment(type, id, listname, fileName, buffer).done(function() {
        alert("success");
    }).fail(function() {
        alert("error in uploading attachment");
    })
}).fail(function(err) {
    alert("error in reading file content");
});
}