2015-08-03 71 views
0

所以我用ng-repeat在相冊創建我的所有歌曲列表中(參見this問題,我剛纔問)奇怪的錯誤與NG單擊

那麼我想現在要做的是使它所以當用戶點擊列表中的一個項目時,它會播放被推薦的曲目。這是我的應用程序:

enitoniApp.controller('musicItems', ['$scope', function ($scope) { 
    $scope.ngplaySong = function (ref, name) { 
     playSong(ref, name) 
    } 
    $scope.albums = [ 
     { 
      name: 'Over The Mountains', 
      price: 0, 
      tracks: [ 
       { 
        name: 'Over The Mountains', 
        ref: 'otm', 
        released: 0, 
       }, 
       { 
        name: '!C3', 
        ref: 'ice', 
        released: 0, 
       }, 
       { 
        name: 'Dark Clouds', 
        ref: 'clouds', 
        released: 0 
       }, 
       { 
        name: 'Fog', 
        ref: 'fog', 
        released: 0 
       } 
     ] 
     }, 
     { 
      name: 'test-album', 
      price: 5000, 
      tracks: [ 
       { 
        name: 'test', 
        ref: 'null' 
       }, 

      ] 
     } 
    ] 
}]); 

正如你所看到的,我試圖用ng-click來調用一個常規函數。這個常規功能(playSong())位於我的播放器的代碼中,它根據參考ID播放曲目。從player.js

片段:

所以我有這個在我的html:

 <li ng-repeat="album in albums"> 
      <div class="info"> 
       <p>{{album.name}}</p> 
       <p>{{album.price | currency}}</p> 
      </div> 
      <ul> 
       <li ng-animate="grid-fade" ng-repeat="track in album.tracks"> 
        <div class="grid-item" ng-click="ngplaySong('{{track.ref}}','{{track.name}}')"> 
         <div class="cover"> 
          <img ng-src="/img/covers/art_{{track.ref}}.png" alt=""> 
         </div> 
         <div class="info"> 
          <p>{{track.name}}</p> 
          <p>{{track.released}}</p> 
         </div> 
        </div> 
       </li> 
      </ul> 
     </li> 

奇怪的是,即使這是正確的渲染:

html

被輸出到控制檯,即使參數是正確的:

error

爲什麼不具約束力的數據時,該函數被調用,我失去了一些東西在這裏?

+0

NG點擊=「ngplaySong (track.ref,track.name)「只需使用ng-click就可以了,並且在內部點擊 – Hmahwish

+1

click不需要花括號。 – katmanco

回答

2

我不認爲你需要在你的ng-click裏面使用大括號。試試這個:

<div class="grid-item" ng-click="ngplaySong(track.ref, track.name)"> 

的事情是,你傳遞一個表達式ng-click然後通過角度分析,這是足夠聰明,從目前的範圍認識的變量。你可以閱讀更多的角度表達在這裏:https://docs.angularjs.org/guide/expression

事實上,在角ng-click文檔,其中包括訪問ng-click表達式中的局部變量一個非常好的和簡單的例子:https://docs.angularjs.org/api/ng/directive/ngClick

+0

不理會我以前的評論。由於某些原因,即使數據未在html中顯示,這也可以工作?我很困惑,你有沒有完美? –

+0

我給答案加了一個簡短的解釋 – Jefim

+0

啊我明白了。感謝您的幫助,這讓我瘋狂。 –