我有一个主索引页面,其中我最初隐藏了页脚栏。但我希望在某些子视图中单击某个项目时显示它。我可以在日志中看到模型正在改变,但它没有反映在视图中。
索引页:
<body ng-app="starter">
<ion-pane ng-controller="AudioCtrl">
<ion-nav-bar class="bar-positive">
<ion-nav-back-button>
</ion-nav-back-button>
</ion-nav-bar>
<ion-nav-view></ion-nav-view>
<ion-content></ion-content>
<ion-footer-bar ng-hide="musicBar.hide">
<div class="audio-block">
.....
</div>
</ion-footer-bar>
</ion-pane>
</body>
子视图页面:
<ion-view ng-controller="AudioCtrl as controller" title="{{selectedCategory}}">
<ion-content>
<ion-list>
<ion-item ng-repeat="item in items" ng-click="$parent.songClicked()">{{item.desc}}</ion-item>
</ion-list>
</ion-content>
</ion-view>
角度代码:
app.controller('AudioCtrl', function ($sce, $scope) {
$scope.musicBar= {
hide: true
};
$scope.songClicked = function(){
console.log($scope.musicBar.hide);
$scope.musicBar.hide = false;
console.log($scope.musicBar.hide);
};
}
);
当我点击该项目时,我可以看到musicBar.hide从true变为false,但它没有反映在视图中。我还检查了其他类似的问题,但解决方案并不起作用。我已经尝试过使用$ scope。$ digest()和$ scope。$ apply(),但是我已经在申请中了。
答案 0 :(得分:0)
index.html和cub视图分别由它们自己的AudioCtrl实例管理,每个实例都有自己的范围。
当主视图范围的musicBar.hide
变为true时,标题会变为可见,但这种情况从未发生过,因为子视图不会对其进行修改。它修改了子视图范围的musicBar.hide
变量。
我认为没有任何理由说明子视图与主视图具有相同的控制器。它不应该。