簡體   English   中英

在彈出窗口中使用$ scope(AngularJS + Ionic)

[英]Using $scope in popup (AngularJS + Ionic)

我按照文檔在項目中設置了一個Ionic彈出窗口。 除了一件事,這很好用。

當我調用該函數時,我不在控制器中(我在services.js中),所以當我定義范圍時:$ scope,我有一個明顯的$ scope is unknown錯誤。

您如何解決呢? 非常感謝 !

如果需要,請在下面找到完整的代碼。

controllers.js

$scope.confirm_redeem_reward = function(asked_reward) {
      RewardModel.displayConfirmRedeemReward(asked_reward)
    };

services.js

...

  RewardModel.displayConfirmRedeemReward = function(asked_reward) {
     var confirmPopup = $ionicPopup.confirm({
       title: 'Confirmation',
       templateUrl: 'templates/popups/confirm_redeem_reward.html',
       scope: $scope,
       buttons: [{
          text: 'Cncel',
          type: 'button-default'
        }, {
          text: 'OK',
          type: 'button-positive',
          onTap: function(e) {
            RewardModel.useReward(asked_reward.id);
            RewardModel.used_reward_or_deal_name = asked_reward.name;
          }
        }]

     });
     confirmPopup.then(function(res) {
       // Nothing
     });
    };

confirm_redeem_reward.html

您是否要兌現獎勵:
{{asked_reward.name}}嗎?

無論是使用控制器還是服務,我都遇到了同樣的難題。 在我看來,服務是一種稍微更好的解決方案,因為彈出窗口的控制器已經包裝在ionicPopup函數中。 (即我不是在寫控制器,我只是委托給ionicPopup)所以我現在通過將rootScope注入服務並自己創建范圍來修復它:

    return {
        showPopup: function () {
            var $scope = $rootScope.$new();
            $scope.data = {};

在服務中包含UI內容仍然感覺很尷尬,因此我願意接受其他選擇。

斯蒂芬

我認為您在錯誤的位置使用了彈出窗口。 您必須分開功能,並且顯示彈出窗口是必須在控制器中的功能。

如果您這樣做的話,它將可以完美地工作;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM