0
我正在使用BreezeJS和AngularJS,但我很难理解如何让Promise与$ scope一起工作。每当我尝试提交表单时,都会显示验证错误,直到第二次点击。我意识到我可以调用$ scope。$ apply(),但我读到它不是最佳做法?这里是我的代码:范围从Promise中更改
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();
});
};
}]);
什么是最好的方式来处理范围内的变化来自一个承诺内部?
使用'$ scope。$ apply()'只是'不是最佳实践',不需要它......但这正是它的目的。 http://jimhoskins.com/2012/12/17/angularjs-and-apply.html – thefrontender