2015-04-09 13 views
6

Voglio associare la fonte di un'immagine alla fonte di un'altra immagine.Come associare la src di un'immagine a ng-model ed estrarla in Angular?

visual example

nel risultato finale, l'origine dell'immagine di grandi dimensioni sia soggetta alla src dell'immagine cliccato più piccolo (miniature). È possibile usare il modello ng?

Ecco quello che ho

 <div> 
      <img ng-src="{{selectedImg.src}}"> 
     </div> 

     <div> 
      <ul ng-repeat="thumb in franchises"> 
       <li> 
        <img ng-src="{{thumb.images[0].list}}" ng-model="selectedImg"> 
       </li> 
      </ul> 
     </div> 

risposta

10

Si potrebbe farlo utilizzando ng clic:

<div> 
    <img ng-src="{{selectedImg.src}}" alt="{{slide.images[0].list}}"> 
</div> 

<div> 
    <ul ng-repeat="thumb in franchises"> 
     <li> 
      <img ng-src="{{thumb.images[0].list}}" 
       alt="{{thumb.images[0].list}}" 
       ng-click="selectedImg.src = thumb.images[0].list" /> 
     </li> 
    </ul> 
</div> 

Ma è necessario definire selectedImg come un oggetto nel controller come questo:

$scope.selectedImg = {}; 
+0

Questo funziona benissimo, grazie. Il fatto è che quando si inizializza, l'immagine grande è vuota e viene riempita solo quando si fa clic su un'immagine piccola. Come imposto questa proprietà iniziale? – RobSeg

+0

È possibile assegnare qualsiasi elemento dall'array in franchising alla proprietà ** $ scope.selectedImg.src **. Ad esempio, se vuoi mostrare la prima immagine da franchising, puoi inizializzare ** $ scope.selectedImg ** in questo modo: $ scope.selectedImg = {src: $ scope.franchises [0] .images [0]. lista \t}; –

4

Per rispondere alla tua domanda, secondo Angular Docs, puoi collegare solo input, selezioni e textareas con ng-m odel o un controllo personalizzato del modulo.

Quello che probabilmente vuole fare è questo: (che è proprio quello che Saulo Lozano ha fatto con ng-click)

https://jsfiddle.net/4fz4nx1k/2/

<img ng-src="{{thumb.images[0].list}}" ng-click="selectedImg.src = thumb.images[0].list" > 

Così non si può davvero legare un img con una ng -modello in questo modo Inoltre, se si potesse inserire un ng-model all'interno di una ng-repeat si otterrebbe lo stesso "valore del modello" in tutti i valori ripetuti della raccolta ng-repeat.