无法使用 $postLink 向元素添加属性 - AngularJS
Can't add an attribute to an element using $postLink - AngularJS
我有一个简单的组件,我想做的是向我的输入元素动态添加一个属性 multiple
,但不知何故它不起作用。为什么?有什么办法可以做我想做的事吗?
app.component('myComponent', {
templateUrl: 'tmpl.html',
bindings: {
str: '@'
},
controller: function () {
var ctrl = this;
ctrl.$postLink = function () {
$('#myInputId').attr('multiple', '');
}
}
}
这是解决方案:
app.component('myComponent', {
templateUrl: 'tmpl.html',
bindings: {
str: '@'
},
controller: function ($element) {
var ctrl = this;
ctrl.$postLink = function () {
$element.find('input').attr('multiple', 'multiple');
}
}
}
诀窍在于链接内容。问题中的代码不起作用,因为 input
在 DOM 中不存在,但在触发 $postLink
挂钩时。所以我们需要的是将$element
服务注入controller,并用它来操作DOM.
我有一个简单的组件,我想做的是向我的输入元素动态添加一个属性 multiple
,但不知何故它不起作用。为什么?有什么办法可以做我想做的事吗?
app.component('myComponent', {
templateUrl: 'tmpl.html',
bindings: {
str: '@'
},
controller: function () {
var ctrl = this;
ctrl.$postLink = function () {
$('#myInputId').attr('multiple', '');
}
}
}
这是解决方案:
app.component('myComponent', {
templateUrl: 'tmpl.html',
bindings: {
str: '@'
},
controller: function ($element) {
var ctrl = this;
ctrl.$postLink = function () {
$element.find('input').attr('multiple', 'multiple');
}
}
}
诀窍在于链接内容。问题中的代码不起作用,因为 input
在 DOM 中不存在,但在触发 $postLink
挂钩时。所以我们需要的是将$element
服务注入controller,并用它来操作DOM.