动态输入添加Angular.js

时间:2014-11-23 18:51:09

标签: javascript angularjs forms

我想创建具有多行输入的动态表单,以便在焦点最后时自动添加新行。我不确定最好的方法是什么,我用解决方案创建了Punker,当我检测到对输入元素的焦点时,我基本上将空项附加到模型数组。

在html中我有:

<input enter="main.addButton()" type="text" class="form-control">

我的输入指令:

function enter() {
 return {
    restrict: 'A',
    link: function  (scope, element, attrs) {
        element.bind('focus', function () {
            scope.$apply(attrs.enter);
        })
    }
}

并且在控制器中只需支持模型:

vm.addButton = function () {
  vm.values.push({name: '', points: null});
};

如果焦点在最后一个元素上,我怎么才能追加? 有没有更好的方法来做到这一点? 理想情况下,我希望有一个指令,我可以放在输入组上,并复制它们。

这是我的完整示例代码: http://plnkr.co/edit/0vmgdk8LbfU0j6G6A2Xy?p=preview

1 个答案:

答案 0 :(得分:2)

您可以使用$last,例如:

enter="$last && main.addButton()"

您也可以使用ngFocus代替enter

  

指定焦点事件的自定义行为。

只需将enter属性替换为ng-focus,例如:

ng-focus="$last && main.addButton()"