pra*_*upd 93 javascript grails twitter-bootstrap angularjs
我想将登录用户点击userName的列表传递userName给twitter bootstrap modal.我正在使用带有angularjs的grails,其中数据通过angularjs呈现.
我的grails查看页面encouragement.gsp是
<div ng-controller="EncouragementController">
<g:render template="encourage/encouragement_modal" />
<tr ng-cloak
ng-repeat="user in result.users">
<td>{{user.userName}}</rd>
<td>
<a class="btn btn-primary span11" href="#encouragementModal" data-toggle="modal">
Encourage
</a>
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
我的encourage/_encouragement_modal.gsp是
<div id="encouragementModal" class="modal hide fade">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-hidden="true">×</button>
<h3>Confirm encouragement?</h3>
</div>
<div class="modal-body">
Do you really want to encourage <b>{{aModel.userName}}</b>?
</div>
<div class="modal-footer">
<button class="btn btn-info"
ng-click="encourage('${createLink(uri: '/encourage/')}',{{aModel.userName}})">
Confirm
</button>
<button class="btn" data-dismiss="modal" aria-hidden="true">Never Mind</button>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
那么,我该如何传递userName给encouragementModal?
Ali*_*avi 145
要传递参数,您需要使用resolve并在控制器中注入项目
$scope.Edit = function (Id) {
var modalInstance = $modal.open({
templateUrl: '/app/views/admin/addeditphone.html',
controller: 'EditCtrl',
resolve: {
editId: function () {
return Id;
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
现在,如果您将使用这样:
app.controller('EditCtrl', ['$scope', '$location'
, function ($scope, $location, editId)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,editId将是未定义的.你需要注入它,像这样:
app.controller('EditCtrl', ['$scope', '$location', 'editId'
, function ($scope, $location, editId)
Run Code Online (Sandbox Code Playgroud)
现在它会顺利工作,我多次遇到同样的问题,一旦注入,一切都开始工作了!
bic*_*cle 56
另一个不起作用.根据文档,这是你应该这样做的方式.
angular.module('plunker', ['ui.bootstrap']);
var ModalDemoCtrl = function ($scope, $modal) {
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: ModalInstanceCtrl,
resolve: {
test: function () {
return 'test variable';
}
}
});
};
var ModalInstanceCtrl = function ($scope, $modalInstance, test) {
$scope.test = test;
};
Run Code Online (Sandbox Code Playgroud)
小智 50
或者,您可以创建新范围并通过范围选项传递参数
var scope = $rootScope.$new();
scope.params = {editId: $scope.editId};
$modal.open({
scope: scope,
templateUrl: 'template.html',
controller: 'Controller',
});
Run Code Online (Sandbox Code Playgroud)
在你的模态控制器中传入$ scope,你就不需要传入了itemsProvider或者解决了你命名它的东西
modalController = function($scope) {
console.log($scope.params)
}
Run Code Online (Sandbox Code Playgroud)
Rub*_*ini 22
您还可以通过添加具有模态实例的新属性并将其传递给模态控制器,轻松地将参数传递给模态控制器.例如:
以下是我想要打开模态视图的点击事件.
$scope.openMyModalView = function() {
var modalInstance = $modal.open({
templateUrl: 'app/userDetailView.html',
controller: 'UserDetailCtrl as userDetail'
});
// add your parameter with modal instance
modalInstance.userName = 'xyz';
};
Run Code Online (Sandbox Code Playgroud)
模态控制器:
angular.module('myApp').controller('UserDetailCtrl', ['$modalInstance',
function ($modalInstance) {
// get your parameter from modal instance
var currentUser = $modalInstance.userName;
// do your work...
}]);
Run Code Online (Sandbox Code Playgroud)
pra*_*upd 17
我ng-click在Encourage按钮上调用了angularjs控制器,
<tr ng-cloak
ng-repeat="user in result.users">
<td>{{user.userName}}</rd>
<td>
<a class="btn btn-primary span11" ng-click="setUsername({{user.userName}})" href="#encouragementModal" data-toggle="modal">
Encourage
</a>
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
我设置userName的encouragementModal从angularjs控制器.
/**
* Encouragement controller for AngularJS
*
* @param $scope
* @param $http
* @param encouragementService
*/
function EncouragementController($scope, $http, encouragementService) {
/**
* set invoice number
*/
$scope.setUsername = function (username) {
$scope.userName = username;
};
}
EncouragementController.$inject = [ '$scope', '$http', 'encouragementService' ];
Run Code Online (Sandbox Code Playgroud)
我提供了一个place(userName)来从angularjs控制器获取值encouragementModal.
<div id="encouragementModal" class="modal hide fade">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-hidden="true">×</button>
<h3>Confirm encouragement?</h3>
</div>
<div class="modal-body">
Do you really want to encourage <b>{{userName}}</b>?
</div>
<div class="modal-footer">
<button class="btn btn-info"
ng-click="encourage('${createLink(uri: '/encourage/')}',{{userName}})">
Confirm
</button>
<button class="btn" data-dismiss="modal" aria-hidden="true">Never Mind</button>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
San*_*nda 10
您应该真正使用Angular UI来满足这些需求.检查出来:Angular UI对话框
简而言之,使用Angular UI对话框,您可以使用控件将变量从控制器传递到对话框控制器resolve.这是你的"来自"控制器:
var d = $dialog.dialog({
backdrop: true,
keyboard: true,
backdropClick: true,
templateUrl: '<url_of_your_template>',
controller: 'MyDialogCtrl',
// Interesting stuff here.
resolve: {
username: 'foo'
}
});
d.open();
Run Code Online (Sandbox Code Playgroud)
在你的对话框控制器中:
angular.module('mymodule')
.controller('MyDialogCtrl', function ($scope, username) {
// Here, username is 'foo'
$scope.username = username;
}
Run Code Online (Sandbox Code Playgroud)
编辑:自新版本的ui对话框以来,解析条目变为:
resolve: { username: function () { return 'foo'; } }
| 归档时间: |
|
| 查看次数: |
182208 次 |
| 最近记录: |