如何使用$ scope变量

时间:2015-07-07 19:30:37

标签: javascript angularjs angular-ui-grid

我试图根据范围变量显示元素。我似乎无法让它发挥作用。由于$ scope.hi存在,我喜欢单词" Active"现身。这是我的代码:

var app = angular.module('app', ['ngTouch', 'ui.grid']);

app.controller('MainCtrl', function ($scope, $timeout) {
  $scope.hi = true;
  $scope.gridOpts = {        
        columnDefs: [
          { name:'name', field: 'name' },
          { name:'isActive', field: 'isActive'},
          { name:'template',cellTemplate:'<div><a ng-show="hi">Active</a><a ng-hide={{row.entity.isActive=="N"}}>Deactive</a></div>'}
        ]
  };

  $scope.waiting = "Waiting...";
  $timeout(function () {
    $scope.gridOpts.data = [{ name: 'Bob' ,isActive:'Y'}];
  }, 3000)
  .then(function() {
    $timeout( function() {
      $scope.gridOpts.data = [{ name: 'John',isActive:'N' }];
    }, 3000);
    $scope.waiting = "Waiting again...";
  })
});

http://plnkr.co/edit/eLFjp8qJCtBRLTrQ7GE5?p=preview

1 个答案:

答案 0 :(得分:2)

ui-grid使用隔离范围创建其网格,这意味着该模板背后的范围不是您定义模板的范围。

但是,隔离范围包含对此原始范围的引用,您可以将其作为grid.appScope进行访问。

如果您将hi更改为grid.appScope.hi,则您的示例有效。 Forked version here.

请参阅ui-grid API docs on appScope

  

另外,AppScope:   引用应用程序范围(ui-grid元素的父范围)。在ui-grid controller中分配

     

使用gridOptions.appScopeProvider覆盖$ scope的默认赋值。$ parent with any reference