Javascript Ionic/AngularJs控制器初始化ng初始化不';行不通

Javascript Ionic/AngularJs控制器初始化ng初始化不';行不通,javascript,angularjs,ionic,Javascript,Angularjs,Ionic,一旦记录,我的控制器初始化脚本不会调用: 去 电邮:qa@billiving.com 通行证号码:111111 当要管理帐户时,下拉列表为空。如果刷新(按f5键),将填充列表。然后,如果您进入隐姓埋名或删除缓存并重新加载页面,列表将再次为空 似乎在我的单页应用程序生命周期的后期调用了初始化 这是我的密码: <ion-view hide-back-button="true" ng-controller="DashboardCtrl" ng-init="Initialize()">

一旦记录,我的控制器初始化脚本不会调用:

去 电邮:qa@billiving.com 通行证号码:111111

当要管理帐户时,下拉列表为空。如果刷新(按f5键),将填充列表。然后,如果您进入隐姓埋名或删除缓存并重新加载页面,列表将再次为空

似乎在我的单页应用程序生命周期的后期调用了初始化

这是我的密码:

<ion-view hide-back-button="true" ng-controller="DashboardCtrl" ng-init="Initialize()">


  <ion-nav-title align-title="center">



  <select ng-options="account.Key as account.Name for account in accounts" ng-change="LoadAccount(account)" 
  ng-model="account.Key">
<option value='' disabled selected>Select Account..</option>
</select>

<a style="cursor: pointer" ng-click="Initialize()">Refresh</a>


  </ion-nav-title>

  <ion-nav-buttons side="right">

  </ion-nav-buttons>

  <ion-nav-buttons side="left">
    <button class="button button-icon button-clear ion-navicon" menu-toggle="left"></button>
  </ion-nav-buttons>
  <ion-content class="page page-dashboard is-pad" style="height:100%">


<iframe frameborder="5" class="frm" ng-src="{{trustSrc(url)}}" scrolling="yes"></iframe>


  </ion-content>
</ion-view>
我发现了两个问题:

  • 您可以定义两次仪表板Ctrl!一次在路由配置中,一次在dashboard.html模板中
  • 为什么要使用ng init?只需在控制器初始化时加载帐户。删除
    ng init
    并直接调用Initialize
  • 编辑:

    仪表板Ctrl在启动时初始化,因为它是默认页面。您可以重定向到登录页面,但仪表板Ctrl及其页面将被爱奥尼亚框架缓存。登录后,仪表板Ctrl将不会再次初始化

    也许你可以重装一下

    $state.go('app.dashboard', {}, {reload: true});
    

    希望这能有所帮助尽管这对SPA并不理想,但我最终还是使用了以下方法:

    $state.go('app.dashboard');
    $window.location.reload(true);
    

    我在使用Ionic时也遇到了同样的问题,那就是ng init在第二次之后将无法工作。这是因为框架中的缓存机制。它在某种程度上也很有用。但在某些情况下,我们可能不需要此功能。当我们应该重新加载整个html页面以使ng init工作时,我们应该在ion视图中使用
    cache view=“false”
    来禁用该页面的缓存


    参考资料:

    我已经删除了额外的仪表板Ctrl和init函数,但仍然存在相同的问题。我已经上传到服务器,所以你们可以刷新和查看。谢谢重新加载失败,我恢复加载整个页面。无论如何,你把我推向了正确的方向:-)显然,你可以这样禁用缓存:这样你就不需要刷新。。
    $state.go('app.dashboard');
    $window.location.reload(true);