在angular-js中使用ng-if in <li>

时间:2017-06-16 08:14:42

标签: angularjs

我正在尝试根据存储在本地系统中的属性值使用ng-if

  • <div class="col-sm-3 col-md-2 sidebar">
        <ul class="nav nav-sidebar">
            <li ng-class="{ 'active': $state.current.name.indexOf('home') != -1 }">
                <a ui-sref="home">Overview</a>
            </li>
            <li ng-class="{ 'active': $state.current.name.indexOf('organization') != -1 }">
                <a ui-sref="organizations">Organizations</a>
            </li>
            <li ng-if="appConfig.flag" ng-class="{ 'active': $state.current.name.indexOf('ApplicationTemp') != -1 }">
                <a ui-sref="ApplicationTemp">Applications Temp</a>
            </li>
        </ul>
    

    现在,这个标志在我的app.config.js中声明为一个标志,如下所示:

    if (__LOCAL__) {
        appConfig.flag = true;
    }
    

    导航栏的我的控制器如下:

    import appConfig from './../../app.config';
    export default function SideBarController() {
        'ngInject';
        var self = this;
    
        self.initialize = _initialize;
        self.initialize();
    
        //Private Functions
        function _initialize() {
            self.endpoints = appConfig.endpoints;
            self.isProd = appConfig.isProd;
        }
    
    }
    

    单词LOCAL主要用于使用npm脚本在本地系统上运行上述系统。 问题是,我不能在我的侧边栏中使用它并在我的if条件下正确使用它。结果是,当我应用这个ng-if条件时,ApplicationTemp总是被隐藏。有什么我想念的吗?

  • 2 个答案:

    答案 0 :(得分:1)

    应该是:ng-if="appConfig.flag"

    无需进行字符串比较。

    <强>更新

    您需要将appConfig.flag绑定到控制器,如下所示:

    function _initialize() {
            self.endpoints = appConfig.endpoints;
            self.isProd = appConfig.isProd;
            self.appConfig = {flag : appConfig.flag}; //add this too to use in html
        }
    

    答案 1 :(得分:1)

    在html模板中使用它必须是$scope变量。将条件中的变量更改为

    $scope.appConfig.flag = true;
    

    然后用 anoop 表示那是

    ng-if="appConfig.flag"