控制器没有在离子应用程序中第二次调用

时间:2016-12-28 13:50:06

标签: angularjs ionic-framework controller

在我使用Ionic框架构建的一个应用程序中,我有一些模板文件,用于在单击“下一步”按钮时显示内容。但是,在某些情况下,我想使用相同的模板,但使用不同的数据(下面的js代码中的if-else条件的一部分)。模板在第一次加载时显示正确的数据。然而,接下来我点击了“下一个”按钮,没有对控制器进行调用(AerodynamicCtrl),并且我再次得到相同的数据(如果是条件的一部分)。我也读过有关离子视图但我没有用它来代码。有人可以帮助我,并在这里建议我做错了什么?提前谢谢。

我的代码 -

html代码 - index.html

_listListView.SetBinding(ListView.IsRefreshingProperty, "IsListRefreshing"); 

IsListRefreshing = true;
//refresh code
IsListRefreshing = false;
上面代码片段中的

getQuestionTemplate()根据某些条件获取我的模板并呈现以下文件

模板/离子aero.html

<ion-content>
 <div class="list card">
    <div data-id='{{q_no}}' class="item item-divider custom-question-title">
        {{question_info.text}}
    </div>
    <div data-ng-include="getQuestionTemplate()"></div>
 </div>
</ion-content>

JS代码

<div data-ng-controller="AerodynamicCtrl" class="spritespin" ng-init="init_aerodynamic_activity()"></div>

2 个答案:

答案 0 :(得分:0)

将视图移除缓存在父ion-view标记上:

<ion-view view-title="Title" cache-view="false"></ion-view>

或使用Ion视图事件之一:

$scope.$on("$ionicView.enter", function(event, data){
   $scope.init_aerodynamic_activity();
});

第二个选项更好,因为视图已缓存,您可以更好地控制事件,如下所述: http://ionicframework.com/docs/api/directive/ionView/

答案 1 :(得分:0)

您是否曾尝试将属性缓存放入路由中:false?

像:

 $stateProvider
        .state('app', {
            url: '/app',
            abstract: true,
            templateUrl: 'templates/menu.html',
            controller: 'AppCtrl'
        })
        .state('app.products', {
            url: '/products',
            views: {
                'menuContent': {
                    templateUrl: 'templates/product/tab-products.html',
                    controller: 'ProductsCtrl',
                    cache:false, //this force IONIC to re call the controller
                    controllerAs: 'prod'
                }
            }
        })