1

我很確定這是非常簡單的問題來解決,但我卡住了。我有一個模式angularjs,它打開一個表單,其中有一個選擇元素和其他需要使用Array/JSON值填充的表單。對於一些如何,我堅持從ModalForm控制器或主頁面控制器傳遞這些值。我創建了這個重新創建問題的Plunker。如何傳遞一個數組/ json值到一個angularjs模式的選擇

主要頁面的代碼是:

angular.module('ui.bootstrap.demo', ['ngAnimate', 'ui.bootstrap']); 
 
angular.module('ui.bootstrap.demo').controller('ModalDemoCtrl', function($uibModal, $log, $document) { 
 
    var $ctrl = this; 
 
    $ctrl.items = ['item1', 'item2', 'item3']; 
 

 
    $ctrl.animationsEnabled = true; 
 

 
    $ctrl.open = function() { 
 
    var modalInstance = $uibModal.open({ 
 
     animation: $ctrl.animationsEnabled, 
 
     ariaLabelledBy: 'modal-title', 
 
     ariaDescribedBy: 'modal-body', 
 
     templateUrl: 'rostaDetail.html', 
 
     controller: 'ModalInstanceCtrl', 
 
     controllerAs: '$ctrl', 
 
     resolve: { 
 
     items: function() { 
 
      return $ctrl.items; 
 
     } 
 
     } 
 
    }); 
 

 
    modalInstance.result.then(function(selectedItem) { 
 
     $ctrl.selected = selectedItem; 
 
    }, function() { 
 
     $log.info('Modal dismissed at: ' + new Date()); 
 
    }); 
 
    }; 
 

 

 
}); 
 

 
// Please note that $uibModalInstance represents a modal window (instance) dependency. 
 
// It is not the same as the $uibModal service used above. 
 

 
angular.module('ui.bootstrap.demo').controller('ModalInstanceCtrl', function($uibModalInstance, items) { 
 
    var $ctrl = this; 
 
    $ctrl.items = items; 
 
    $ctrl.selected = { 
 
    item: $ctrl.items[0] 
 
    }; 
 

 
    $ctrl.ok = function() { 
 
    $uibModalInstance.close($ctrl.selected.item); 
 
    }; 
 

 
    $ctrl.cancel = function() { 
 
    $uibModalInstance.dismiss('cancel'); 
 
    }; 
 
});
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script> 
 
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-animate.js"></script> 
 
<script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-2.5.0.js"></script> 
 
<script src="example.js"></script> 
 
<link href="//netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> 
 

 
<div ng-controller="ModalDemoCtrl as $ctrl" class="modal-demo"> 
 
    <button type="button" class="btn btn-default" ng-click="$ctrl.open()">Open me!</button> 
 
    <div ng-show="$ctrl.selected">Selection from a modal: {{ $ctrl.selected }}</div> 
 
    <div class="modal-parent"> 
 
    </div> 
 
</div>

打開我!從模式選擇 :{{$ ctrl.selected}}

和模態形式是:

<!-- .Modal Form Edit Rosta --> 
 

 
<div class="modal-header"> 
 
    <h3 class="modal-title" id="modal-title">Edit Roster</h3> 
 
</div> 
 
<div class="modal-body" id="modal-body"> 
 
    <form class="form-horizontal"> 
 
     <fieldset> 
 
      <div class="form-group"> 
 
       <label class="col-md-4 control-label" for="selectDuty">Select Duty</label> 
 
       <div class="col-md-4"> 
 
        <select id="selectDuty" name="selectDuty" ng-model="item" ng-options='item in items' class="form-control"></select> 
 
       </div> 
 
      </div> 
 
      <!-- Multiple Checkboxes --> 
 
      <div class="form-group"> 
 
       <label class="col-md-4 control-label" for="checkboxes">Multiple Checkboxes</label> 
 
       <div class="col-md-4"> 
 
        <div class="checkbox"> 
 
         <label for="checkboxes-0"> 
 
         <input name="checkboxes" id="checkboxes-0" value="1" type="checkbox"> 
 
         Option one 
 
        </label> 
 
        </div> 
 
       </div> 
 
      </div> 
 

 
      <div class="modal-footer"> 
 
       <!-- Button (Double) --> 
 
       <div class="form-group"> 
 
        <!-- <label class="col-md-4 control-label" for="button1id">Double Button</label> --> 
 
        <div class="col-md-8"> 
 
         <button id="buttonSave" name="buttonSave" class="btn btn-primary" ng-click="$ctrl.ok()">Save</button> 
 
         <button id="buttonDelete" name="buttonDelete" class="btn btn-danger" ng-click="$ctrl.delete()" ng-show="false">Delete</button> 
 
         <button type="button" class="btn btn-basic" ng-click="$ctrl.cancel()">Cancel</button> 
 
        </div> 
 
       </div> 
 
      </div> 
 
     </fieldset> 
 
    </form> 
 
</div>

+1

Plunker:https://plnkr.co/edit/M3McgWiHNosxZP8ajidw?p=git​​ter –

+0

這裏有一個解決普拉克:https://開頭plnkr .CO /編輯/ VwRVSXPVeYePdPSpk1vK?p =預覽。 @哈迪已經在我面前回答了。 – Brian

回答

0

當你使用controllerAs語法訪問對象或功能,從而在範圍內,您應該使用controllerAs變量和.。這裏$ctrl

它應該是這樣的。

ng-options='item as item for item in $ctrl.items' 

和控制器:

$ctrl.ok = function() { 
    $ctrl.selected = { 
     item: $ctrl.item 
    }; 
    $uibModalInstance.close($ctrl.selected.item); 
}; 

Demo

+0

它的作品!感謝隊友,真的很感激。 –

+0

不客氣:),請接受它。 –

相關問題