javascript - 从不同的 Controller 更新 ng-show

标签 javascript angularjs angularjs-ng-show

我正在尝试弄清楚如何在状态更改时更新我的​​ ng-show 变量。在我的默认 index.html 文件中,我有:

<div id="searchBar" ng-show="searchBar" ng-controller="mainController"></div>

由于这不是我的 page1 模板的一部分,因此当状态更改时 searchBar 不会更新。变量实际上正在正确更改,但 ng-show 不知道这一点。

我了解 Angular ,但是有人对让 ng-show 在 Controller 中更改时注意到 searchBar 中的变化有任何建议吗?

var routerApp = angular.module('app', ['ui.router'])
    .service('MainShared', function () {
        var MainShared = this;
        MainShared.searchBar = false;
    })
    .controller('mainController', function($scope, MainShared) {
        $scope.searchBar = MainShared.searchBar;
    });

routerApp.config(function($stateProvider, $urlRouterProvider, $locationProvider) {

    $locationProvider.html5Mode(true);
    $urlRouterProvider.otherwise('/page1');

    $stateProvider
        .state('page1', {
            url: '/page1',
            templateUrl: 'pages/templates/page1.html', 
            controller: 'page1' 
        });
});

routerApp.controller('page1', function($scope, $http, $state, MainShared) {

    MainShared.searchBar = true;

});

编辑:请注意,从下面的答案来看,您不需要服务来执行此操作。

最佳答案

使用$rootScope

.controller('mainController', function($scope, $rootScope) {
    console.log($rootScope.searchBar);
});


routerApp.controller('page1', function($scope, $rootScope, $http, $state) {
    $rootScope.searchBar = true;
});

关于javascript - 从不同的 Controller 更新 ng-show,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29909012/

相关文章:

javascript - 将搜索查询传递给谷歌地图 JS api

javascript - React,使用该组件内的按钮删除组件

angularjs - 基于用户角色的 Angular $routeProvider

javascript - 在 Angular 应用程序中显示 JS 和 CSS 代码

angularjs - ng-hide 和 ng-show 都不会改变元素的可见性

angularjs - 何时使用 ng-if 与 ng-show/ng-hide?

angularjs - 配置 ng-show 和 ng-hide 速度

javascript - 使用 JavaScript 获取当前 URL?

javascript - 如何在 JavaScript 中删除 div?如何在同一个div中添加输入字段

angularjs - 我可以将 !important css 关键字与 Angularjs ng-style 指令一起使用吗?