【问题标题】:Titanium Mobile: Closing activity indicator from with another controllerTitanium Mobile:使用另一个控制器关闭活动指示器
【发布时间】:2014-07-08 17:49:37
【问题描述】:

我有 4 个控制器,index.jstoken.jsmain.jstoken.js。如果未找到详细信息,则索引检查身份验证并重定向到token.js 以获取用户详细信息。如果身份验证检查,则它会打开带有用户详细信息的main.js。现在,就在token.js 内的open() 命令之后,我有这一行来显示指标活动:

var dispIndicator = Alloy.createController('loader').getView();
dispIndicator.open();

现在,我没有对指示器使用超时,因为我想准确了解 main.js 进程后面的显示何时完成。当所有内容都已获取并且所有元素都准备好后,在 main.js 内,我有这行来关闭指示器:

var dispIndicator = Alloy.createController('loader').getView();
dispIndicator.close(); // also tried hide();

但是,这不起作用,而是给出undefined 错误。

如何从主控制器中关闭加载器?

【问题讨论】:

    标签: mobile android-activity titanium


    【解决方案1】:

    最简单的方法是使用alloy.js 文件并创建全局函数来显示和隐藏加载指示器。我决定使用全局事件监听器来隐藏加载器:

    alloy.js

    var loaders = [];
    Alloy.Globals.loading = function(view) {
      if (!view.hasLoading) {
        var loading = Alloy.createController('loading');
        loaders.push({
          view: view,
          loading: loading.getView()
        });
        loading.indicator.show();
        loading.loading.show();
        view.add(loading.getView());
        view.hasLoading = true;
      }
    };
    
    Ti.App.addEventListener('app:loaded', function() {
      for (var i in loaders) {
        if (loaders[i].view && loaders[i].loading) {
          loaders[i].view.remove(loaders[i].loading);
          loaders[i].view.hasLoading = false;
        }
      }
      loaders = [];
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 2016-06-25
      相关资源
      最近更新 更多