我正在尝试根据存储在本地系统中的属性值使用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总是被隐藏。有什么我想念的吗?
答案 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"