使用范围变量的ng-show的正确语法是什么

时间:2015-07-25 04:12:24

标签: angularjs uiview

我正在为某个状态设置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')

2 个答案:

答案 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'" >