Chcę wypełnić formularz z pytaniami niektórych dynamicznych (skrzypce here):Jak ustawić nazwę modelu dynamicznego w AngularJS?
<div ng-app ng-controller="QuestionController">
<ul ng-repeat="question in Questions">
<li>
<div>{{question.Text}}</div>
<select ng-model="Answers['{{question.Name}}']" ng-options="option for option in question.Options">
</select>
</li>
</ul>
<a ng-click="ShowAnswers()">Submit</a>
</div>
function QuestionController($scope) {
$scope.Answers = {};
$scope.Questions = [
{
"Text": "Gender?",
"Name": "GenderQuestion",
"Options": ["Male", "Female"]},
{
"Text": "Favorite color?",
"Name": "ColorQuestion",
"Options": ["Red", "Blue", "Green"]}
];
$scope.ShowAnswers = function()
{
alert($scope.Answers["GenderQuestion"]);
alert($scope.Answers["{{question.Name}}"]);
};
}
Wszystko działa, z wyjątkiem model jest dosłownie odpowiedzi [ „{{question.Name}}”] zamiast ocenianego odpowiedzi ["GenderQuestion"]. Jak mogę dynamicznie ustawić tę nazwę modelu?
Przysięgam, że próbowałem. Dziękuję Ci bardzo. Poszedłem na inną trasę i po prostu ustawiłem model na pytanie. Odpowiedź (trochę zaktualizuję skrzypce), co okazało się bardziej bezpośrednią odpowiedzią (muszę wyjść ze sposobu myślenia jQuery), ale wspaniale jest wiedzieć, że mogę zrobić to tak, jak pierwotnie planowałem na przyszłość. Dzięki jeszcze raz! –
Zaktualizowane skrzypce: http://jsfiddle.net/2AwLM/23/ –
Jeśli to pomogło komuś innemu, miałem podobne problemy, ale moim problemem było to, że używałem 'ng-pattern =" field.pattern "' to, czego naprawdę chciałem, to 'pattern =" {{field.pattern}} "'.Kłopotliwe, że kątowe zwykle dostarcza pomocnika dla dynamicznych atrybutów, ale tym razem napisał własną walidację po stronie klienta i nadał mu tę samą nazwę. – colllin