2015-08-26 38 views
2

這是我的js代碼:插件按鈕和角度:NG-點擊不工作

var application = angular.module('app', ['onsen']); 

application.controller('ItemController',function($scope){ 
    $scope.local = []; 
    $scope.loadPresentation = function(id){}; 
} 

,這是我的插件列表:

<ons-list id ="list" style="margin:0px;padding:0px;" ng-controller="ItemController"> 
    <ons-list-item modifier="chevron" ng-repeat="item in local"> 
    <ons-carousel style="height: 100%;width :100%;position: absolute;left: 0;top: 0;" swipeable initial-index="1" auto-scroll> 

     <ons-carousel-item class="list-action-menu"> 
     <ons-button modifier = "quiet" ng-click="menu.setMainPage('default.html', {closeMenu: true, callback: function(){loadPresentation(0);}});"> 
      {{item.name}} 
     </ons-button> 
     </ons-carousel-item> 

     <ons-carousel-item class="list-action-menu"> 
     <ons-button ng-click="local.splice($index, 1);runtime.local=local"> 
      Remove 
      <ons-icon icon="ion-trash-a"> 
     </ons-button> 
     </ons-carousel-item> 

    </ons-carousel> 
    </ons-list-item> 
</ons-list> 

第二個按鈕工作正常,但第一ng-click在第一個輪播項目中不會觸發,但它可以在我使用onclick時在範圍之外使用。

+3

只是一個暗示:你應該在一個控制器功能包裝這個代碼。您的觀點並非假設您的代碼具有邏輯性。 –

+0

注意'ng-click =「menu.setMainPage('default.html',{closeMenu:true,callback:function(){loadPresentation(0);}});'''menu'代碼缺失,外觀就像你在控制器中忘了它,否則將它添加到問題中。 –

+0

+1以前的評論,但你也沒有定義你的範圍menu.setMainPage()。 ng-click正在尋找該功能,但由於您尚未定義它,因此它不會觸發。 – ArBro

回答

0

ng-click期望角度表達,意思是function declarations are not allowed。只要創建在您的控制器回調,並從您的視圖鏈接它:

$scope.myCallback = function(){ 
    $scope.loadPresentation(0); 
}; 

ng-click="menu.setMainPage('newpage.html', {closeMenu: true, callback: myCallback});"

希望它有幫助。

編輯:回調帶參數

$scope.customSetMainPage = function(params) { 
    $scope.menu.setMainPage('newpage.html', { 
    callback: function() { 
     console.log(params); 
    } 
    }); 
}; 
+0

如果我想從ng-repeat中獲取參數,該怎麼辦? – Anima

+2

只需在控制器的另一個函數中包裝'menu.setMainPage(...)'並將參數傳遞給它。 'ng-click =「customSetMainPage($ index,params,...))」'。然後,使用控制器中的參數創建回調。我給答案增加了一個例子。 –

+0

謝謝你們!它正在工作。 – Anima