私は AngularJS で BreezeJS を使用していますが、Promise を $scope で動作させる方法を理解するのに苦労しています。フォームを送信しようとすると、2 回目にクリックするまで検証エラーが表示されません。$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 内からのスコープ変更を処理する最良の方法は何ですか?