plunker:
http://plnkr.co/edit/wURNg8ByPYbEuQSL4xwg
example.js:
angular.module('plunker',['ui.bootstrap']); var ModalDemoCtrl = function ($scope,$modal) { $scope.open = function () { var modalInstance = $modal.open({ templateUrl: 'modal.html',controller: 'ModalInstanceCtrl' }); }; }; var ModalInstanceCtrl = function ($scope,$modalInstance) { $scope.ok = function () { alert($scope.text); }; $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; };
index.html:
<!doctype html> <html ng-app="plunker"> <head> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.js"></script> <script src="http://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.6.0.js"></script> <script src="example.js"></script> <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet"> </head> <body> <div ng-controller="ModalDemoCtrl"> <button class="btn" ng-click="open()">Open me!</button> <div ng-show="selected">Selection from a modal: {{ selected }}</div> </div> </body> </html>
modal.html:
<div class="modal-header"> <h3>I'm a modal!</h3> </div> <textarea ng-model="text"></textarea> <div class="modal-footer"> <button class="btn btn-primary" ng-click="ok()">OK</button> <button class="btn btn-warning" ng-click="cancel()">Cancel</button> </div>
为什么我不能得到$ scope.text在ModalInstanceCtrl中定义,即使我可以使用$ scope.ok和$ scope.cancel?
看起来像一个范围问题。我得到它工作这样:
var ModalInstanceCtrl = function ($scope,$modalInstance) { $scope.input = {}; $scope.ok = function () { alert($scope.input.abc); }; $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; };
HTML:
<textarea ng-model="input.abc"></textarea>