Angularjs 无法在modal、ModalInstance.result.中绑定数据,然后总是被解除
我有一份记录清单。在每条记录中,我都有一个编辑按钮。单击编辑按钮将打开一个需要绑定当前数据的模式 但是,当我单击“编辑”时,总是会打开一个空模式,而不填充数据。在调试时,我知道由于一些问题,控件将进入错误部分,因此我不断收到一条消息,显示“模态正在被解除” 以下是我的代码:Angularjs 无法在modal、ModalInstance.result.中绑定数据,然后总是被解除,angularjs,Angularjs,我有一份记录清单。在每条记录中,我都有一个编辑按钮。单击编辑按钮将打开一个需要绑定当前数据的模式 但是,当我单击“编辑”时,总是会打开一个空模式,而不填充数据。在调试时,我知道由于一些问题,控件将进入错误部分,因此我不断收到一条消息,显示“模态正在被解除” 以下是我的代码: var EditModalInstance = $modal.open({ templateUrl: "EditCourseModal.html", controller: EditModalInstanceCt
var EditModalInstance = $modal.open({
templateUrl: "EditCourseModal.html",
controller: EditModalInstanceCtrl,
resolve: {
courseDetails: function () {
return $scope.courseDetails;
}
}
});
EditModalInstance.result.then(function (selectedItem) {
$scope.selected = selectedItem;
$log.info(selectedItem + "Here I am.");
}, function () {
$log.info('Modal dismissed at: ' + new Date()); //control is coming in this part always
});
这是我的模态控制器:
var EditModalInstanceCtrl = function ($scope, $modalInstance, $log, coursesFactory,
courseDetails) {
$scope.courseDetails = courseDetails;
$scope.selected = $scope.courseDetails;
$scope.update = function () {
coursesFactory.updateCourse($scope.courseDetails)
.success(function (status) {
$scope.status = "Course details updated.";
$log.info(status);
getCourses();
})
.error(function (error, status) {
$scope.status = "Unable to update course details.";
$log.warn(error, status);
});
};
$scope.cancel = function () {
$modalInstance.dismiss('close');
};
};
然后我在视图中使用了此课程详细信息:
<script type="text/ng-template" id="EditCourseModal.html">
<div class="modal-header">
<span><strong>Edit course</strong></span>
<button type="button" class="close" data-ng-click="cancel()">x</button>
</div>
<div class="modal-body">
<dl>
<dt>Id</dt>
<dd><span>{{courseDetails.Id}}</span></dd>
</dl>
<dl>
<dt>Name</dt>
<dd>
<input type="text" data-ng-model="courseDetails.Name"></input>
</dd>
</dl>
<dl>
<dt>Duration</dt>
<dd>
<input type="text" data-ng-model="courseDetails.Duration"></input></dd>
</dl>
</div>
<div class="modal-footer">
<button class="btn btn-primary" data-ng-click="update()">Update</button>
<button class="btn btn-warning" data-ng-click="cancel()">Cancel</button>
</div>
</script>
编辑课程
x
身份证件
{{courseDetails.Id}
名称
期间
更新
取消
我怀疑您的决心不是承诺对象,即$scope.courseDetails;这也许不是一个承诺
试着这样做:
resolve:
courseDetails: function () {
return CourseFactory.getCourseDetails();
}
确保getCourseDetails返回承诺。错误回调包含一个参数。为
函数(error){$log.info('模式被解除,因为:“+error”)提供一个参数;
。然后检查是否有一些可用的详细信息。@Chandermani否。我想我在调试时弄错了。这既不是错误部分,也不是成功部分。我不知道发生了什么。当我尝试取消模式时,它就起作用了。但我不断得到[$rootScope:inprog]调试时,$apply已作为错误进行中。向我们显示控制器中注入的CoursedDetails的代码。如果这是所有代码,则$scope.CoursedDetails=CoursedDetails;会导致$scope.CoursedDetails未定义,因为我看不到CoursedDetails被定义为任何角度服务。请尝试调试程序在该行放置断点或者尝试硬编码$scope.CoursedDetails={Id:1,名称:'ww'};用于调试目的,并向我们显示您得到的结果。我已调试了代码。$scope.CoursedDetails在编辑()时填充了所需的数据函数在根作用域中调用。这是$scope.CoursedDetails在运行时的内容:{0:Object Duration:“2个月”Id:2 Name:“LINQ”}