在角度上可以使用逆$watch吗?
我的问题
我使用角度翻译,我想对每一个缺少的翻译使用一个$http.put。但我知道这个错误:
我的解决方案
为了解决这个问题,我创建了一个数组,并希望将所有缺少的翻译ID都推入其中。当页面准备就绪时,我希望将数组放到后端,在后端检查id并将其保存到数据库中。
我的问题
但是,我如何知道页面什么时候准备好了,换句话说,我如何知道角什么时候可以将丢失的翻译推入数组?我在考虑一个逆$watch函数,因此,当数组/集合中没有写任何东西时,就调用了一个函数,比如说,1秒。这是可能的,还是有更好的方法解决这个问题?
我没有需要显示的代码,因为所有代码都是像$http和array.push这样的基本函数。
发布于 2017-01-23 15:12:31
发布于 2017-01-23 15:30:46
如果您正在进行某种类型的$http调用,可以使用承诺回调(如then()、catch()、finally() )对响应采取适当的操作:
$http.put('api/someEndpoint').then(function(response) {
// $scope.someArray.push(response.data);
// this.someArray.push(response.data);
});如果您的翻译或项位于ng-重复中,则可以基于此回答在完成ng-重复时执行一个函数,并使用$emit发出事件,同时使用$on of $scope或$rootScope收听它们。
app.controller('SomeController', function SomeController($scope) {
// executed on last iteration of ng-repeat
$scope.foo = function() { $scope.$emit('someEvent') });
$scope.$on('someEvent', function() { // event triggered, do something like $http });
});还不完全清楚如何使用此It填充项,但这可能是一种方法。
希望这能帮上忙!
发布于 2017-01-23 18:57:26
下面是一个小演示,我尝试从您标记的其他堆栈溢出问题中获得一些想法。https://embed.plnkr.co/anL7unrSAB21hdLPMoxG/
我认为如果页面准备就绪,您不需要担心,因为在这里,我们将我们的流程与翻译服务的useMissingTranslationHandler挂钩。下面是一些附随演示plunck的代码快照
angular
.module('app', ['pascalprecht.translate', 'ngCookies'])
.service('customTranslationHandlerService', ['$http', function ($http) {
this._queue = {};
/* queue items to push to server ....*/
this.pushToQueue = function (missingTranslationId) {
if (!this._get(missingTranslationId)) {
this._set(missingTranslationId);
}
this._start();
}
}])
.factory('customTranslateMissingTranslationHandlerLog', ['customTranslationHandlerService', function (customTranslationHandlerService) {
return function (translationId) {
customTranslationHandlerService.pushToQueue(translationId);
};
}])
.config(['$translateProvider', function ($translateProvider) {
$translateProvider.useMissingTranslationHandler('customTranslateMissingTranslationHandlerLog');
}])https://stackoverflow.com/questions/41809299
复制相似问题