Recentemente ho preso Angular come esercizio di apprendimento.Angolare: fornitura di metodi per il modello ng
Mi piacerebbe passare un metodo a ng-model
o un'espressione che potrebbe valutare a uno.
In questo violino http://jsfiddle.net/C4aGk/ vedrai che ho codificato il campo come ng-model="record.inner[0].text"
e funziona, ora la cosa è, vorrei sostituire lo zero codificato con qualcosa che viene restituito a run- orario, selezionato secondo un criterio, indicare id = 1
.
Il mio codice HTML:
<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/>
e le corrispondenti 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++;
}
};
Ho provato mettendo ng-model="getText(record)"
secondo https://groups.google.com/forum/#!topic/angular/Pef6LY2rT7g senza successo, e un'altra richiesta alzato questo https://github.com/angular/angular.js/pull/1328 che è altrettanto inutile a me.
Qualsiasi aiuto sarà molto apprezzato.
Hai un bug nella funzione 'getText'. 'per/in' i loop non funzionano così in JavaScript. Dovresti cambiare l'istruzione if in 'if (record.inner [nested] .id === 1) {'. Ad ogni modo, ciò non risolverà il tuo intero problema. Potrebbe essere meglio descrivere ciò che stai cercando di fare e non come stai cercando di farlo. Ad esempio, se stai solo provando a consentire all'utente di modificare [0] o [1] dopo aver fatto clic su un pulsante Modifica, sarebbe meglio/più facile, in Angolare, avere campi separati da mostrare/nascondere. – Langdon
Grazie a @Langdon per aver colto l'errore, di solito evito i cicli "for/in" quindi sono un po 'arrugginito. Sto seguendo la guida di Dan Wahlin per Angular JS e stavo cercando di rifare l'app del cliente referenziata nella presentazione quando mi è venuto in mente di provare questo e poiché avrebbe dovuto funzionare secondo i link che ho citato. Ho pensato che dovesse essere qualcosa che sto sbagliando. Sto solo esplorando le direttive al momento, ecco da dove viene la domanda. :) – adeelx