我有一个指令,我正在尝试获取 Attrs 并将它们传递给 $scope,但我不太确定该怎么做。更具体地说,我试图将我的模板中的属性设置为等于我的日期选择器标签中设置的名称。我尝试将它们设置为变量,但显然这不起作用。 非常感谢帮助和进一步澄清。谢谢!
HTML
<date-picker id="dateendPicker" name="date_end"></date-picker>
JS
App.directive('datePicker', function(){
return {
scope: {
name : '@'
},
restrict: 'AE',
replace: 'true',
template: '<div class="date"><div class="input-group"><input type="text" class="form-control" id="{{this_name}}" name="{{this_name}}" ng-model="event.{{this_name}}" required/><span class="input-group-addon"><i class="fa fa-calendar"></i></span></div></div>',
controller: ['$scope', function($scope){
$scope.this_name = this_name;
}],
link: function(scope, element, attrs){
var this_name = attrs.name;
}
}
});
最佳答案
由于您定义指令范围的方式:
scope: {
name : '@'
}
名称已经是您范围内的一个变量。如果你没有在你的 Controller \链接函数上做任何特别的事情,你可以完全放弃它们,并在你的模板中用{{name}}引用它。请注意,如果您使用“@”创建范围绑定(bind),那么在您的 html 中,您应该将数据作为 Angular 表达式传递,这意味着:
name="{{date_end}}"
关于javascript - 在 Angular 中将 attrs 作为 $scope 变量传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24460850/