从自定义指令内部如何更改另一个span元素的文本?

时间:2014-02-08 22:03:58

标签: angularjs angularjs-directive

我有一个<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元素。另请注意,我不想使用控制器传递文本,它必须保持在指令内,因为我想重新使用它。

请不要告诉我,我不应该这样做,我想坚持这种行为。

1 个答案:

答案 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);
        }
    };
});