Angular指令拥有范围

时间:2016-02-26 14:38:44

标签: javascript angularjs directive

我有以下指令

<preload loaded="false" ng-if="!loaded"></preload>

return {

            restrict: 'E',
            templateUrl: 'template.html',
            scope: {
                loaded: '='
            },


            link: function(scope, element, attrs) {        
                //scope.loaded = true
                //hide directive
            }

        }

在任何控制器之外。

我的问题是,我可以在链接函数中将加载更改为true并且指令会消失吗?

1 个答案:

答案 0 :(得分:1)

您的意思是通过单击按钮等操作来更改值吗?如果是这样的话:

我认为您可以像对待任何其他值一样切换该值。可以传递的第四个参数是控制器。

link: function(scope, element, attrs, ctrl) {
  scope.loaded = true;
  scope.toggle = function() {
    scope.loaded = !scope.loaded;
  };
}

然后您可以将scope.toggle分配给按钮。或者你的意思是只在运行链接功能时更改值?

修改

这是一个快速的傻瓜,展示你为角1.5写的意思:

https://plnkr.co/edit/6nj4N6LdGULv7vX4EUqs?p=preview

编辑2 我的傻瓜的第13-20行:

angular
    .module('app')
    .controller('PreloadCtrl',PreloadCtrl);

  function PreloadCtrl() {
    var vm = this;
    vm.loaded = false;
  }

这基本上定义了一个名为 PreloadCtrl 的控制器,并向其传递一个充当控制器的函数。这与执行此操作相同,这可能是您习惯的:

.controller('PreloadCtrl', function () {//Controller stuff})