我正在为某个状态设置ng-show,因此我应该显示删除按钮。
但它没有用。我检查了控制台,我的方法将true传递给scope变量。仍然不确定是什么问题。
application.html
<ul class="nav navbar-nav navbar-right">
<li ng-show="notesState" ><a ng-really-message="Are you sure you want to delete this note?" ng-really-click="deleteNote(note)" class="glyphicon glyphicon-trash " style="float:left;" >Delete note</a></li>
<li><a href="#/home" >+ New Note</a></li>
<li ng-hide="signedIn"><a href="#/login">Login</a></li>
<li ng-show="signedIn"><a href="#/home">{{user.email}}</a></li>
<li class="pointer" ng-show="signedIn"><a ng-click="logout()">Logout</a></li>
</ul>
noteCtrl.js中的
$scope.notesState = $state.is('notes')
答案 0 :(得分:2)
是notesState吗?你可能需要$ scope。$ apply()如果它在控制器加载时是假的,但后来变为真。
有时返回一个函数有效,但我真的不知道为什么你需要这样做。
$ scope.notesState = function(){return $ state.is(&#39; notes&#39;)}
纳克放映=&#34; notesState()&#34;
这里是$ state.is以及它有时会返回的函数
$state.is = function is(stateOrName, params, options) {
options = extend({ relative: $state.$current }, options || {});
var state = findState(stateOrName, options.relative);
if (!isDefined(state)) { return undefined; }
if ($state.$current !== state) { return false; }
return params ? equalForKeys(state.params.$$values(params), $stateParams) : true;
};
和
function equalForKeys(a, b, keys) {
if (!keys) {
keys = [];
for (var n in a) keys.push(n); // Used instead of Object.keys() for IE8 compatibility
}
for (var i=0; i<keys.length; i++) {
var k = keys[i];
if (a[k] != b[k]) return false; // Not '===', values aren't necessarily normalized
}
return true;
}
如果这有助于任何人调查此事。
答案 1 :(得分:1)
尝试使用这种方式。可能会有效。
<li ng-show="notesState=='true'" >