2014-06-10 72 views
0

感謝您的關注。

我有這股相同的角控制器作爲它的父頁面模態下的標記:

<!-- START Add Event Video --> 
    <script type="text/ng-template" id="EventVideo.html"> 
     <div class="event-modal"> 
     <div class="modal-header"><h3>Event Video</h3></div> 
     <div class="modal-body"> 
     <p>Please enter the URL of either a <strong>YouTube</strong> or <strong>Vimeo</strong> video.</p> 
     <span ng-if="!Event.VideoUrlIsValid" style='color:#9f9f9f;'>This doesn't look like a valid YouTube or Vimeo Url. Your video may not work.</span> 
     <div class="row" ng-controller="EventCreateController"> 
      <div pr-form-input span="12" name="videoUrl" ng-model="Event.Item.VideoUrl" placeholder="YouTube or Vimeo URL" isRequired="false" no-asterisk></div>           
     </div> 
     </div> 
     <div class="modal-footer"><button class="btn btn-primary" ng-click="Event.UI.EventVideoModal.Close()">Done</button></div> 
     </div> 
    </script> 
    <!-- END Add Event Video --> 

這裏是相關的JavaScript:

EventVideoModal: { 
       Open: function() { 
        $scope.EventVideoModal = $modal.open({ 
         templateUrl: 'EventVideo.html', 
         controller: 'EventCreateController', 
         scope: $scope 
        }); 
       }, 
       Close: function() { 
        $scope.EventVideoModal.close(); 
       } 
      } 

請注意:Event.Item.VideoUrl模型參考。

該模式允許用戶設置視頻的URL,目標是在控制器中設置$scope.Event.Item.VideoUrl,然後關閉模式。父母頁面和模式都共享相同的控制器,所以我希望這可以工作。

模式行爲沒有問題(打開和關閉,因爲它應該),但$scope.Event.Item.VideoUrl屬性沒有得到設置。

任何意見表示讚賞。

問題解決了!

感謝Bogdan Savluk,我意識到我有一個範圍繼承問題。因此,消除雙方明確提到在HTML模式的控制器,以及在JavaScript構造,解決了我的問題:

<!-- START Add Event Video --> 
     <script type="text/ng-template" id="EventVideo.html"> 
      <div class="event-modal"> 
      <div class="modal-header"><h3>Event Video</h3></div> 
      <div class="modal-body"> 
      <p>Please enter the URL of either a <strong>YouTube</strong> or <strong>Vimeo</strong> video.</p> 
      <span ng-if="!Event.VideoUrlIsValid" style='color:#9f9f9f;'>This doesn't look like a valid YouTube or Vimeo Url. Your video may not work.</span> 
      <!-- <div class="row" ng-controller="EventCreateController"> <--REMOVE THIS! --> 
<div class="row"> 
       <div pr-form-input span="12" name="videoUrl" ng-model="Event.Item.VideoUrl" placeholder="YouTube or Vimeo URL" isRequired="false" no-asterisk></div>           
      </div> 
      </div> 
      <div class="modal-footer"><button class="btn btn-primary" ng-click="Event.UI.EventVideoModal.Close()">Done</button></div> 
      </div> 
     </script> 
     <!-- END Add Event Video --> 

這裏是相關的JavaScript:

​​

回答

1

如果你是通過scope$modal.open()比範圍爲模態將被創建爲子範圍從傳遞scope ... - 因此您將有權訪問它的所有屬性。

但是,如果您將相同的控制器傳遞給它 - 該控制器將應用於新的作用域,並將覆蓋父項的所有屬性。

所以一般情況下,我看到你需要做的唯一一件事就是從配置中移除控制器,傳遞給$modal.open(),或者將其替換爲只針對該模式的特定內容。

+0

謝謝,這讓我走上了正軌! –

相關問題