Angular 指令自己的范围
Angular directive own scope
我有以下指令
<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
}
}
在任何控制器之外。
我的问题是,我可以在 link 函数中将 loaded 更改为 true 并且指令会消失吗?
您的意思是通过单击按钮等操作更改值吗?如果是:
我认为您可以像切换任何其他值一样切换该值。可以传递的第四个参数是控制器。
link: function(scope, element, attrs, ctrl) {
scope.loaded = true;
scope.toggle = function() {
scope.loaded = !scope.loaded;
};
}
然后您可以将 scope.toggle
分配给按钮。或者你的意思是当 link 函数是 运行 时只改变值?
编辑
这是一个快速的 plunkr,展示了你为 angular 1.5 编写的意思:
https://plnkr.co/edit/6nj4N6LdGULv7vX4EUqs?p=preview
编辑 2
我的 plunkr 第 13-20 行:
angular
.module('app')
.controller('PreloadCtrl',PreloadCtrl);
function PreloadCtrl() {
var vm = this;
vm.loaded = false;
}
这基本上定义了一个名为 PreloadCtrl 的控制器,并向它传递了一个充当控制器的函数。这和这样做是一样的,这可能是你习惯的:
.controller('PreloadCtrl', function () {//Controller stuff})
我有以下指令
<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
}
}
在任何控制器之外。
我的问题是,我可以在 link 函数中将 loaded 更改为 true 并且指令会消失吗?
您的意思是通过单击按钮等操作更改值吗?如果是:
我认为您可以像切换任何其他值一样切换该值。可以传递的第四个参数是控制器。
link: function(scope, element, attrs, ctrl) {
scope.loaded = true;
scope.toggle = function() {
scope.loaded = !scope.loaded;
};
}
然后您可以将 scope.toggle
分配给按钮。或者你的意思是当 link 函数是 运行 时只改变值?
编辑
这是一个快速的 plunkr,展示了你为 angular 1.5 编写的意思:
https://plnkr.co/edit/6nj4N6LdGULv7vX4EUqs?p=preview
编辑 2 我的 plunkr 第 13-20 行:
angular
.module('app')
.controller('PreloadCtrl',PreloadCtrl);
function PreloadCtrl() {
var vm = this;
vm.loaded = false;
}
这基本上定义了一个名为 PreloadCtrl 的控制器,并向它传递了一个充当控制器的函数。这和这样做是一样的,这可能是你习惯的:
.controller('PreloadCtrl', function () {//Controller stuff})