Ich habe Angular vor kurzem als eine Lernübung aufgenommen.Angular: Providing Methoden zu ng-Modell
Ich würde gerne eine Methode an ng-model
oder einen Ausdruck übergeben, der zu einem auswerten könnte. In dieser Geige http://jsfiddle.net/C4aGk/ werden Sie sehen, dass ich das Feld als ng-model="record.inner[0].text"
hart codiert habe und es funktioniert, jetzt ist die Sache, ich möchte die hart-codierte Null mit etwas ersetzen, das bei run zurückgegeben wird Zeit, ausgewählt durch ein Kriterium sagen id = 1
.
Mein HTML-Code:
<div ng-controller="MainController" ng-app>
<div ng-repeat="record in records">
<input ng-model="record.inner[0].text"> <span>{{record.outer}}</span>
<div ng-repeat="nested in record.inner">{{nested.id}} - {{nested.text}}</div>
<hr />
</div>
</div>
<br/>
und die entsprechende js:
function MainController($scope) {
$scope.records = [{
outer: "Hello",
inner: [{
id: 1,
text: "Angular"
}, {
id: 2,
text: "jQuery"
}]
}, {
outer: "World",
inner: [{
id: 1,
text: "Node.js"
}, {
id: 2,
text: "Underscore.js"
}]
}];
$scope.getText = function (record) {
var index = 0;
for (nested in record.inner) {
if (nested.id === 1) {
return "record.inner[" + index + "].text";
}
index++;
}
};
Ich habe versucht, ohne Erfolg ng-model="getText(record)"
wie pro https://groups.google.com/forum/#!topic/angular/Pef6LY2rT7g platzieren, und eine andere Suche diesen https://github.com/angular/angular.js/pull/1328 aufgedreht, die gleich ist nicht hilfreich für mich.
Jede Hilfe wird sehr geschätzt.
Sie haben einen Fehler in Ihrer 'getText' Funktion. 'for/in'-Loops funktionieren in JavaScript nicht so. Sie müssten die if-Anweisung in 'if (record.inner [nested] .id === 1) {' ändern. So oder so, das wird Ihr Problem nicht beheben. Es könnte besser sein, zu beschreiben, was Sie versuchen und nicht wie Sie es versuchen. Wenn Sie zum Beispiel nur versuchen, den Benutzer nach dem Klicken auf eine Schaltfläche Bearbeiten [0] oder [1] bearbeiten zu lassen, wäre es besser/einfacher, in Angular separate Felder zu haben, die Sie ein-/ausblenden. – Langdon
Danke @Langdon für den Fehler, ich vermeide normalerweise die 'for/in'-Schleifen, also bin ich ein bisschen eingerostet. Ich folge Dan Wahlins Anleitung zu Angular JS und versuchte, die Kunden-App, auf die in der Präsentation Bezug genommen wurde, neu zu gestalten, als mir der Gedanke kam, dies zu versuchen, und da es gemäß den angegebenen Links funktionieren sollte. Ich dachte, es wäre etwas, was ich falsch mache. Ich erforsche gerade die Richtlinien im Moment, da kam die Frage. :) – adeelx