我有一个角度ui网格,其中显示数据,并且在每一行中都有一个"编辑"和"删除"按钮。当用户点击"编辑"然后显示模态窗口并填充字段,用户可以编辑数据。这是我的用户场景。当用户点击"编辑"按钮我传递id值,当angular创建模态窗口时,我从服务器查询数据。
正如你在html中看到的那样,控制器没有绑定,因为它是由另一个控制器管理的。如果它绑定在这里,那么它将被调用两次。
字段填充正确,当我更改其中的某些内容并且我想保存它时,breeze表示实体中没有任何更改,而save方法中的日志会返回实体的原始值。
我认为数据绑定有问题,但我不知道是什么。
根据复数视频和微风的文档,breeze跟踪实体中的变化。
我做错了什么? 表格:
<form class="form-horizontal" name="editModuleModalForm">
<legend>Edit module</legend>
<div class="control-group">
<label class="control-label">Module name</label>
<div class="controls">
<input type="text"
placeholder="Module name here..."
data-ng-model="vm.sysmodule.name"
data-z-validate />
</div>
</div>
<div class="control-group">
<label class="control-label">Module Sort number</label>
<div class="controls">
<input type="text"
placeholder="Module sort number"
data-ng-model="vm.sysmodule.sortNo"
data-z-validate />
</div>
</div>
<div class="control-group">
<label class="control-label">Route</label>
<div class="controls">
<input type="text"
placeholder="Module route comes here..."
data-ng-model="vm.sysmodule.route"
value="vm.sysmodule.route"
data-z-validate />
</div>
</div>
<div class="control-group">
<button type="submit" class="btn btn-success" data-ng-click="vm.save()">Save</button>
<button type="submit" class="btn btn-danger" data-ng-click="vm.cancel()">Cancel</button>
</div>
</form>
表单的角度控制器
(function () {
'use strict';
var controllerId = 'editModuleController';
angular
.module('dilibApp')
.controller(controllerId, ['$scope', '$modalInstance', 'selectedModuleId', 'common', 'datacontext', editModuleController]);
function editModuleController($scope, $modalInstance, selectedModuleId, common, datacontext) {
/* jshint validthis:true */
var vm = this;
vm.title = 'editModule';
vm.sysmodule = undefined;
vm.cancel = cancel;
vm.save = save;
activate();
function activate() {
onDestroy();
common.activateController([getModulePropertiesToBeEdited()], controllerId);
}
function getModulePropertiesToBeEdited() {
return datacontext.sysmodule.getById(selectedModuleId)
.then(function (result) {
vm.sysmodule = result[0];
});
}
function onDestroy() {
$scope.$on('$destroy', function () {
datacontext.cancel();
});
}
function cancel() {
$modalInstance.dismiss('cancel');
}
function save() {
console.log(vm.sysmodule);
if (datacontext.hasChanges) {
datacontext.saveChanges();
console.log('Changes are saved!');
} else {
console.log('There are no changes to be saved!');
}
$modalInstance.close();
}
}
})();
答案 0 :(得分:0)
绑定没有问题。如果问题是datacontext没有hasChanges方法的根,因为breeze的entityManager被包装在其中。我不得不重新编写代码,重新考虑责任,现在正在运作。