在我使用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>
答案 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'
}
}
})