2

我有这样的代码如何手动编译指令?

<input type="text" name="firstName" ng-model="data.firstName" required> 

但我想打一个指令,以简化像这样

<my-field name="firstName"></my-field> 

这里是我的plnkr链接:http://plnkr.co/edit/XYk5MmE3YzKxvAHQgoZp?p=preview

两个问题 1.如何让我的领域像原始输入一样工作 2.在这种情况下可以使用模板属性吗?

谢谢

+0

你问这是可能的还是别的? –

+0

我相信OP想要完成手头任务的某个方向 –

+0

我确信这是可能的,但是我的实现不起作用,我不知道为什么。检查Plnkr –

回答

2

我已经解决它自己:http://plnkr.co/edit/XYk5MmE3YzKxvAHQgoZp?p=preview

我手动添加nameng-model属性,然后我重新编译元素。

+0

我不认为这是一个很好的解决方案,你说你不想硬编码,但你在你的例子做了... –

+0

检查我的更新,如果它适合你... –

+0

它根本没有硬编码。查看这些liness'元素[0] .setAttribute('name',name);''element [0] .setAttribute('ng-model','data。'+ name);' –

0

在你的代码中,你不必为了设置模型值而进行自定义编译。

为了获得像ng-model这样的值,您可以在自定义指令中要求ngModel。

使用ngModel一个例子实施日期选取器指令

https://github.com/angular-ui/ui-date

+0

我不需要一个新的范围,我只需要替换html代码。 –

+0

http://plnkr.co/edit/CdM29mz7Gh4UpwhsGUWR?p=preview请参阅更新的Plnkr。我们可以使用替换 – jintoppy

+0

好吧,但如何不硬编码名称? –

0

检查这个PLUNKER ...

,只要你想,你可以定义你的指令变量,在这里我只是用myFieldVar将变量传递给你的指令,你不关心变量名称范围,因为你在模板中看到

我使用ng-model="myFieldVar"所以你绑定到任何范围可变我场-VAR在HTML您可以使用该名称使用它...

UPDATE

如果不希望使用新的范围,然后添加范围:真你的指令的选择,但在这种情况下,你只能做你的模板替换您的指示标记...

这里更新PLUNKER

+0

我需要设置:name和ng-model,并且我不需要新的范围。 –