Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
55
rated 0 times [  58] [ 3]  / answers: 1 / hits: 20728  / 10 Years ago, sun, october 26, 2014, 12:00:00

I'm creating a webapp and I want to implement an option to add friends. I've created the add friend page as a modal with a text input field. I want to test this by displaying the input on my view page. How do I display this data onto my view page?



Here's what I currently have



index.html



<div ng-controller=ModalDemoCtrl>
<script type=text/ng-template id=myModalContent.html>
<div class=modal-header>
<h3 class=modal-title>I'm a modal!</h3>
</div>

<form name = addFriendForm>
<input ng-model = user.nameclass=form-control type = text placeholder=Username title= Username />
{{ user.name }}
</form>

<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>
</script>

<button class=btn btn-default ng-click=open()>Add Friend</button>
<div> Username: {{user.name}}</div>
</div>


my JavaScript file:



angular.module('ui.bootstrap.demo', ['ui.bootstrap']);
angular.module('ui.bootstrap.demo').controller('ModalDemoCtrl', function ($scope, $modal, $log) {

$scope.user = {name: }

$scope.open = function () {

var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: 'ModalInstanceCtrl',
resolve: {
items: function () {
return $scope.items;
}
}
});

modalInstance.result.then(function () {
$scope.user.name = user.name;}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
};
});

angular.module('ui.bootstrap.demo').controller('ModalInstanceCtrl', function ($scope, $modalInstance) {

$scope.ok = function () {
$modalInstance.close($scope.user.name);
};

$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
});


plunkr: http://plnkr.co/edit/JIoiNx47KXsY8aqbTUDS?p=preview


More From » angularjs

 Answers
9

Resolve - plunkr



You could make use of modalInstance's resolve property; this acts as the link between the modal instance and the parent controller.



You inject the object in to the ModalInstanceController, and assign it to the scope of your modal instance.



UI Bootstraps resolve works exactly the same as ngRouter's; as such if for whatever reason resolve cannot resolve an object, the modal will not open.



var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: 'ModalInstanceCtrl',
resolve: {
user: function() {
return $scope.user;
}
}
});


Scope - plunkr



An alternative, and arguably simpler method would be to pass in the parents scope in to the modal. Note that currently this doesn't work when using controllerAs syntax on the parent controller.



var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: 'ModalInstanceCtrl',
scope: $scope
});

[#69013] Wednesday, October 22, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
kaleyv

Total Points: 259
Total Questions: 99
Total Answers: 107

Location: Saint Helena
Member since Tue, Nov 3, 2020
4 Years ago
;