Angular。限制:'A' 指令。传递对象
Angular. restrict: 'A' directive. Pass object
有没有办法将配置对象传递给定义为属性指令的自定义指令?
我在 Controller 中有一个对象要发送到指令:
$scope.configObject = {
count: 5,
mode: 'fast',
getData: myService.getData // function of external service that avaliable in controller
}
在我看来,我声明指令:
<div class='list-class' my-list='configObject'></div>
指令看起来像:
return {
restrict: 'A',
link: function(scope, elem, attrs) {
var config = angular.fromJson(attrs.myList);
}
}
我尝试使用 angular.getJson 获取配置对象 - 但它不适用于函数(可能只获取计数和模式)。 .getJson() 获取配置的方式不正确吗?
另外(我想这甚至不可能)- 有没有办法让配置对象避免访问
attrs.myList
直接?我的意思是,如果我从
更改指令的初始化
.directive('myList', function() { ... }) to
.directive('myCustomList', function() { ... })
我可以更改访问权限吗
attrs.myCustomList
因为视图看起来像
<div class='list-class' my-custom-list='configObject'></div>
您可以使用 $parse 服务获取配置对象。
(function(){
var directiveName = 'myList';
angular.module('YourModule').directive(directiveName,['$parse',function($parse){
return {
restrict: 'A',
link: function(scope, elem, attrs) {
var config = $parse(attrs[directiveName])(scope);
}
};
}]);
})();
如果需要,您可以使用隔离范围传递它
return {
restrict: 'A',
scope: { config : '=myList' }
link: function(scope, elem, attrs) {
//access using scope.config
}
}
或者如前所述,您可以从 attrs
解析它
$parse(attrs["myList"])(scope);
是的,如果您将指令更改为 myCustomList,则必须更改代码
scope: { config : '=myCustomList' }
或
$parse(attrs["myCustomList"])(scope);
您可以 $eval 属性
link: function(scole, element, attrs) {
var config = scope.$eval(attrs['myList']);
}
有没有办法将配置对象传递给定义为属性指令的自定义指令?
我在 Controller 中有一个对象要发送到指令:
$scope.configObject = {
count: 5,
mode: 'fast',
getData: myService.getData // function of external service that avaliable in controller
}
在我看来,我声明指令:
<div class='list-class' my-list='configObject'></div>
指令看起来像:
return {
restrict: 'A',
link: function(scope, elem, attrs) {
var config = angular.fromJson(attrs.myList);
}
}
我尝试使用 angular.getJson 获取配置对象 - 但它不适用于函数(可能只获取计数和模式)。 .getJson() 获取配置的方式不正确吗?
另外(我想这甚至不可能)- 有没有办法让配置对象避免访问
attrs.myList
直接?我的意思是,如果我从
更改指令的初始化.directive('myList', function() { ... }) to
.directive('myCustomList', function() { ... })
我可以更改访问权限吗
attrs.myCustomList
因为视图看起来像
<div class='list-class' my-custom-list='configObject'></div>
您可以使用 $parse 服务获取配置对象。
(function(){
var directiveName = 'myList';
angular.module('YourModule').directive(directiveName,['$parse',function($parse){
return {
restrict: 'A',
link: function(scope, elem, attrs) {
var config = $parse(attrs[directiveName])(scope);
}
};
}]);
})();
如果需要,您可以使用隔离范围传递它
return {
restrict: 'A',
scope: { config : '=myList' }
link: function(scope, elem, attrs) {
//access using scope.config
}
}
或者如前所述,您可以从 attrs
解析它 $parse(attrs["myList"])(scope);
是的,如果您将指令更改为 myCustomList,则必须更改代码
scope: { config : '=myCustomList' }
或
$parse(attrs["myCustomList"])(scope);
您可以 $eval 属性
link: function(scole, element, attrs) {
var config = scope.$eval(attrs['myList']);
}