我正在将 BreezeJS 与 AngularJS 一起使用,但我很难理解如何让 Promises 与 $scope 一起使用。每当我尝试提交我的表单时,它不会显示验证错误,直到我第二次单击它。我意识到我可以调用 $scope.$apply() 但我读到它不是最佳实践?这是我的代码:
app.controller("MainController", ["$scope", "$q", "datacontext", function ($scope, $q, datacontext) {
datacontext.manager.fetchMetadata();
$scope.errors = [];
$scope.addDamp = function () {
var item = datacontext.manager.createEntity("Damp", {
name: $scope.newDamp
});
var tes = datacontext.manager.saveChanges()
.then(function () {
alert("yay");
})
.fail(function (error, a, b, c) {
var arr = [];
error.entitiesWithErrors.map(function (entity) {
entity.entityAspect.getValidationErrors().map(function (validationError) {
arr.push(validationError.errorMessage);
});
});
$scope.errors = arr;
datacontext.manager.rejectChanges();
});
};
}]);
处理来自 Promise 内部的范围更改的最佳方法是什么?