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,並且我不需要新的範圍。 –