如何使用jQuery在指令模板中为元素设置值

时间:2015-05-15 08:31:35

标签: javascript jquery angularjs angularjs-directive directive

我有一些指令和一些模板。

angular.module('testModule', [])
    .directive('testInput', function () {
        var id = 1;
        return {
            restrict: 'E',
            replace: true,
            scope: {
                model: '='
            },
            template: '<div><input type="text" id="{{uniqueId}}"/></div>',
            link: function (scope) {
                scope.uniqueId = "test" + id++;

                $('#' + scope.uniqueId).val(33);
            }
        }
    });

我想用uniqueId为元素设置值,但我不能这样做。 你能帮助我吗? 有关Plunker的例子:example。 感谢。

编辑。

我找到了另一种解决方案。

        .......
 template: '<div><input type="text" id="{{uniqueId}}" ng-value="someModel"/></div>',
        link: function (scope, elem, attrs) {
            scope.uniqueId = "test" + id++;
            scope.someModel = 887;
        }
        .......

示例:Plunker

1 个答案:

答案 0 :(得分:2)

不幸的是,JQuery超出了角度$digest周期。更简单的方法是使用link函数通常提供的内容,即访问三个变量scopeelemattrs,这样您就可以执行以下操作:< / p>
link: function (scope, elem, attrs) {
        scope.uniqueId = "test" + id++;
        elem.children().first()[0].value = 33;
    }

这是你的插件的叉子

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