gpt4 book ai didi

javascript - AngularJS 指令 : Pass dynamically created object as attribute for nested directive

转载 作者:行者123 更新时间:2023-11-30 17:05:34 25 4
gpt4 key购买 nike

我有一个环绕另一个指令的指令。子指令接受“选项”对象作为属性。我想在父指令的链接函数中创建此选项对象,然后将其设置为父模板中子指令的属性,但如果它是动态创建的,则不会设置选项对象。如果选项对象是在模板本身中静态设置的,则此方法有效。

我这里有一个 plunker:http://plnkr.co/edit/gNeKMcneO8RDBmlmpt72?p=preview任何指针将不胜感激!!

angular.module('nestedDirectives', [])
.directive('fruitinfo',
[
function() {
return {
restrict: 'A',
scope: {
fruitname: '@?'
},
template: '<br>Fruit Name: {{fruitname}}<br>Fruit Options: {{fruitoptions}}',

link: function(scope, element, attrs) {
scope.fruitoptions = scope.$eval(attrs['fruitinfo']);
}
};
}])
.directive('fruits',
[
function() {
return {
restrict: 'E',
scope: {
selectedFruits: '=?',
btnSizeClass: "@?"
},
template: 'btnSizeClass: {{btnSizeClass}}<br>Fruits: {{fruits}}<br><div ' +
' fruitinfo="fruitOptions" ' +
' fruitname="{{f}}"' +
' ng-repeat="f in fruits">' +
'</div><br><br>' +
'<div fruitname="With static fruitOptions: {{f}}" fruitinfo="{test: \'testOption\', btnSizeClass: \'btn-xs\'}" ng-repeat="f in fruits"></div>',

link: function(scope, element, attrs) {
scope.fruitOptions = {test: 'testOption', btnSizeClass: scope.btnSizeClass};
scope.fruits = ['Apple', 'Banana', 'Watermelon', 'Strawberry'];


}
};
}]
)
;

最佳答案

你在范围定义中使用 $eval 而不是像这样使用“&”的任何特殊原因

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

如果你使用

fruitoptions:'&fruitinfo'

然后你做

scope.fruitoptions=$scope.fruitoptions() 

在您的链接函数中,您将在其原始范围内获得已评估的表达式,还可以考虑在链接周期之前调用的 Controller 函数上执行此操作

关于javascript - AngularJS 指令 : Pass dynamically created object as attribute for nested directive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28102503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com