AngularJS附加新输入并设置其值

时间:2015-11-30 10:48:01

标签: javascript jquery angularjs

我正在使用像这样的输入骨架创建一个指令

<input type="hidden" data-ng-model="model['foo'][__index__]['bar']" data-ng-init="model['foo'][__index__]['bar'] = null" name="foo___index___bar">

每当触发一个动作时,我就会得到这个骨架,根据动作(主要是当前数组位置)替换__index__一个整数,并将其附加到div中。

这很有效,它只是一个

element.append(newInput)

然后使用$compile(element)(scope)我在新元素上加载角度。

问题是我必须为每个新创建的输入设置一个值,我尝试使用newInput.val(myVal),但它不起作用。在我的范围内,未设置新值。

我可以做scope.model['foo'][__index__]['bar'] = myVal但我不能,因为代码应该可以重用于其他表单,输入名称会改变(这就是为什么它是一个指令)。

如何实现这一目标?

我的整个代码如下

<div data-index="0" data-prototype="<input type=\"hidden\" data-ng-model=\"model['foo'][__index__]['bar']\" data-ng-init=\"model['foo'][__index__]['bar'] = null\" name=\"foo___index___bar\">"></div>

JS

'use strict';

angular
    .module('ngSkeleton')
    .directive('ngSkeleton', function($log, $http, $compile) {
        return {
            restrict    : 'AE',
            require     : '?ngModel',
            scope       : {
                prototype: '@',
                index: '@'
            },
            link: function(scope, element, attrs) {
                myVal = "something_in_here";
                scope.index = element.find(':input').length;
                var newInput   = angular.element(scope.prototype.replace(/__index__/ig, scope.index));
                newInput.val(myVal);
                element.append(newInput);
                scope.index++;
                $compile(element)(scope);
            }
        };
    });

0 个答案:

没有答案