模型更改未在angularjs中反映出来

时间:2015-09-27 12:20:53

标签: angularjs angularjs-scope

我有一个主索引页面,其中我最初隐藏了页脚栏。但我希望在某些子视图中单击某个项目时显示它。我可以在日志中看到模型正在改变,但它没有反映在视图中。

索引页:

<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(),但是我已经在申请中了。

1 个答案:

答案 0 :(得分:0)

index.html和cub视图分别由它们自己的AudioCtrl实例管理,每个实例都有自己的范围。

当主视图范围的musicBar.hide变为true时,标题会变为可见,但这种情况从未发生过,因为子视图不会对其进行修改。它修改了子视图范围的musicBar.hide变量。

我认为没有任何理由说明子视图与主视图具有相同的控制器。它不应该。