我是新來的角,我試圖創建一個投票投票應用程序。現在我有4個輸入框。創建新投票時使用1個問題和3個答案。如果您想添加另一個答案,我還有一個按鈕可以添加一個新的輸入框。我閱讀,如果我想動態內容到DOM我應該使用指令。我創建了一個可以添加我想要的新html內容的應用程序,該應用程序還應該添加一個ng-model屬性,以便可以訪問數組中的內容以及其他內容。原來那裏的輸入框工作正常,但是當我添加一個新的輸入框時,它不會訪問它。動態添加指令,但內容不顯示
指令/功能代碼:
votingApp.directive('addAnswers', [function(){
return {
template:"<li><input type='text' ng-model='choices[3]' /></li>",
restrict: 'E'
}
}]);
功能將添加新的指令到輸入框列表。
$scope.addAnswer = function(){
var node = document.createElement("LI");
var textnode = document.createElement("add-answers");
node.appendChild(textnode);
$scope.pollAnswers.appendChild(node);
};
最後,它應該被添加到HTML中。
<form ng-submit="createPoll()">
<p>Question</p>
<input type="text" ng-model="pollQuestion" />
<p>Answers</p>
<ul id="answers">
<li><input type="text" placeholder=" " ng-model="choices[0]" /></li>
<li><input type="text" placeholder=" " ng-model="choices[1]" /></li>
<li><input type="text" placeholder=" " ng-model="choices[2]" /> </li>
</ul>
<input id="create" type="submit" value="Create Poll" />
</form>
基本上,當我添加一個新的輸入,我要使ng-model =長度的數組。但是,當我這樣做時,添加新元素時,陣列不會獲得更大的插槽。
plunk顯示了我也意味着使用指令。我的答案基本上就是這個想法。 – csschapker
嘿,那個搶劫者真的幫了忙。我想我有我想要的功能。唯一令人困惑的部分是爲什麼我們在html元素中有選擇=「選擇」,還有指令的模板,範圍部分。我的猜測是使html中的屬性允許我們在我們的li中自由使用選擇數組? –
nj51
你可以查看Angular的[directive]文檔(https://docs.angularjs.org/guide/directive)。它從指令的角度解釋了什麼範圍。在這種情況下,我們將$ scope.choices(從控制器)綁定到也稱爲選擇的指令範圍的值。 '選擇:'=''表示我們將使用父範圍的2路綁定到指令。 – csschapker