我有一个<input>
,它将我的自定义指令保存为属性,在该属性中,我给出了将接收文本的目标ID。目前我正在使用jQuery进行文本更改,但我宁愿使用完整的Angular方式...所以它有点绑定但是来自指令。为简单起见,我做了一个简单的代码草案:
HTML代码
<input type="text" name="input1" my-directive="message1" />
<span id="message1"></span>
JS代码
// Angular - custom Directive
directive('myDirective', function($log) {
return{
require: "ngModel",
link: function(scope, elm, attrs, ctrl) {
var receiverId = attrs.myDirective;
var whateverText = 'blabla';
$('#'+receiverId).text(whateverText);
}
};
});
在我的<span>
元素上使用ID可能不是最好的解决方案,但这就是我使用jQuery的方法。删除ID可能更好,但是我怎么能更新我的跨度中的文本呢?我们不要忘记它是一个Form,我们可以有多个输入和span元素。另请注意,我不想使用控制器传递文本,它必须保持在指令内,因为我想重新使用它。
请不要告诉我,我不应该这样做,我想坚持这种行为。
答案 0 :(得分:3)
如果<span>
将始终是您示例中的下一个兄弟,只需使用Angular的本地jqLite支持的elm.next()
,不需要用jQuery包装,例如< / p>
directive('myDirective', function($log) {
return{
require: "ngModel",
link: function(scope, elm, attrs, ctrl) {
var receiverId = attrs.myDirective;
var whateverText = 'blabla';
elm.next().text(whateverText);
}
};
});