首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角逆$watch

角逆$watch
EN

Stack Overflow用户
提问于 2017-01-23 14:59:06
回答 3查看 154关注 0票数 1

在角度上可以使用逆$watch吗?

我的问题

我使用角度翻译,我想对每一个缺少的翻译使用一个$http.put。但我知道这个错误:

尝试从ng翻译错误处理程序执行$digets()时达到"10 $http.post()迭代“

我的解决方案

为了解决这个问题,我创建了一个数组,并希望将所有缺少的翻译ID都推入其中。当页面准备就绪时,我希望将数组放到后端,在后端检查id并将其保存到数据库中。

我的问题

但是,我如何知道页面什么时候准备好了,换句话说,我如何知道角什么时候可以将丢失的翻译推入数组?我在考虑一个逆$watch函数,因此,当数组/集合中没有写任何东西时,就调用了一个函数,比如说,1秒。这是可能的,还是有更好的方法解决这个问题?

我没有需要显示的代码,因为所有代码都是像$httparray.push这样的基本函数。

EN

回答 3

Stack Overflow用户

发布于 2017-01-23 15:12:31

有许多解决方案可以检查controller是否完成了获取数据并将数据绑定到模板,取决于转换id字符串是来自端点还是最初存在于模板中,我建议如下方法:

  • 这个答案显示模板中使用的参数
  • 这个答案正在检查$viewContentLoaded
  • 您可以在不定义特定时间的情况下使用$timeout
票数 0
EN

Stack Overflow用户

发布于 2017-01-23 15:30:46

如果您正在进行某种类型的$http调用,可以使用承诺回调(如then()catch()finally() )对响应采取适当的操作:

代码语言:javascript
复制
$http.put('api/someEndpoint').then(function(response) {
    // $scope.someArray.push(response.data);
    // this.someArray.push(response.data);
});

如果您的翻译或项位于ng-重复中,则可以基于此回答在完成ng-重复时执行一个函数,并使用$emit发出事件,同时使用$on of $scope$rootScope收听它们。

代码语言:javascript
复制
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填充项,但这可能是一种方法。

希望这能帮上忙!

票数 0
EN

Stack Overflow用户

发布于 2017-01-23 18:57:26

下面是一个小演示,我尝试从您标记的其他堆栈溢出问题中获得一些想法。https://embed.plnkr.co/anL7unrSAB21hdLPMoxG/

我认为如果页面准备就绪,您不需要担心,因为在这里,我们将我们的流程与翻译服务的useMissingTranslationHandler挂钩。下面是一些附随演示plunck的代码快照

代码语言:javascript
复制
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');
  }])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41809299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档