我想创建具有多行输入的动态表单,以便在焦点最后时自动添加新行。我不确定最好的方法是什么,我用解决方案创建了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
答案 0 :(得分:2)
您可以使用$last
,例如:
enter="$last && main.addButton()"
您也可以使用ngFocus
代替enter
:
指定焦点事件的自定义行为。
只需将enter
属性替换为ng-focus
,例如:
ng-focus="$last && main.addButton()"