从Ionic模态调用函数后参数搞乱

nep*_*une 8 javascript angularjs ionic-framework

我有一个视图,在Ionic + Angular应用程序中打开一个模态的简单按钮.单击按钮后正确显示模态模板:

<ion-modal-view>
  <ion-header-bar>
    <h1 class="title">Popular tags</h1>
    <div class="buttons">
      <button class="button button-clear button-stable" ng-click="closePopularForm()">Close</button>
    </div>
  </ion-header-bar>
  <ion-content>
      <div class="list">
        <div class="item-divider text-center">
          Select a tag to follow.
        </div>
        <label class="item">
        <button class="button button-balanced" ng-click="addPopularTag('china')">China</button>
            <button class="button button-balanced" ng-click="addPopularTag('uk')">United Kingdom</button>
            <button class="button button-balanced" ng-click="addPopularTag('us')">United States</button>
        </label>
      </div>
  </ion-content>
</ion-modal-view> 
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,模态包含3个按钮,每个按钮调用相同的功能但具有不同的参数.我有这个控制器包含功能:

app.controller('HomeCtrl', function($scope, $ionicSideMenuDelegate, $ionicModal) {

  $ionicModal.fromTemplateUrl('add-popular.html', { scope: $scope }).then(function(modal) {
        $scope.modalPopular = modal;
    });

    $scope.closePopularForm = function() {
        $scope.modalPopular.hide();
    };

    $scope.openPopularForm = function() {
        $scope.modalPopular.show();
    };

    $scope.addPopularTag = function(poptag) {
        console.log(poptag);
        console.log('pop form submited '+poptag);
    };  
});
Run Code Online (Sandbox Code Playgroud)

问题是无论在模态中单击哪个按钮,addPopularTag都会使用第一个按钮的参数调用该函数(china在这种情况下).我检查了按钮的html源代码,并使用不同的参数正确呈现它们.

以下是Codepen中问题的复制. 您可以在控制台中看到它.

Ash*_*ger 2

代替

<label class="item">
  <button class="button button-balanced" ng-click="addPopularTag('china')">China</button>
  <button class="button button-balanced" ng-click="addPopularTag('uk')">United Kingdom</button>
  <button class="button button-balanced" ng-click="addPopularTag('us')">United States</button>
</label>
Run Code Online (Sandbox Code Playgroud)

和

<button class="button button-balanced" ng-click="addPopularTag('china')">China</button>
<button class="button button-balanced" ng-click="addPopularTag('uk')">United Kingdom</button>
<button class="button button-balanced" ng-click="addPopularTag('us')">United States</button>
Run Code Online (Sandbox Code Playgroud)

虽然我不知道这个标签有什么作用