AngularJS: ng-click 功能和改变变量的状态
AngularJS: ng-click with function and changing variable's state
我正在尝试将 Bootstrap 3 个模态与 AngularJS 结合使用。我有两个按钮:登录和注册,单击它们后我希望弹出一个模式。根据用户选择的按钮,我需要显示适当的内容。为了解决这个问题,我在模态框内使用了 ng-show 和 ng-hide。一切正常,但在这段代码中我的变量 isRegistrationPage
没有改变它的状态。
button.btn.btn-default.navbar-btn.btn-info ng-click="isRegistrationPage=false;open('sm')" Log in
button.btn.btn-default.navbar-btn.btn-warning ng-click="isRegistrationPage=true;open('sm')" Sign up
我几乎使用了来自 https://angular-ui.github.io/bootstrap/#/modal
的原始 JS 部分
还有其他管理目标的好方法吗?
您可以在控制器中有两个函数,每个按钮一个,然后从那里调用 open('sm')。
像这样:
$scope.onLoginClicked = function(){
$scope.isRegistrationPage = false;
open('sm');
}
$scope.onSignupClicked = function(){
$scope.isRegistrationPage = true;
open('sm');
}
然后只需在 ng-click 上使用它们
我认为您尝试以错误的方式使用模态服务,尤其是您想要通过 isRegistrationPage 变量的方式。
看看下面的代码片段:
在这里您可以看到我的控制器的一部分,其中 editBlogEntry 方法负责打开模式 window。请注意我可以传递变量的解析部分。
function editBlogEntry(blogEntryId)
{
var modalInstance = $modal.open({
templateUrl: '/ui/app/dilib/partials/blog/blog-entries/blog-entry-form.html',
controller: 'editBlogEntryController as vm',
size: 'lg',
resolve: {
selectedBlogEntryId: function ()
{
return blogEntryId;
}
}
});
modalInstance.result
.then(function (result)
{
logSuccess('Blog entry is modified!');
$route.reload();
});
}
这是控制器的一部分,将在打开模式 window 时实例化。注意 selectedBlogEntryId 这是传递的变量。
var controllerId = 'editBlogEntryController';
angular
.module('dilibApp')
.controller(controllerId, ['$scope', '$modalInstance', 'selectedBlogEntryId', 'common', 'datacontext', 'dataservice.blogentry.helper', editBlogEntryController]);
function editBlogEntryController($scope, $modalInstance, selectedBlogEntryId, common, datacontext, dataServiceBlogEntryHelper)
{ /*... javascript magic ...*/}
HTML部分,可以看到edit方法绑定了一个button元素。
<button class="btn" ng-model="blogEntry.id" ng-click="vm.editBlogEntry(blogEntry.id)">edit</button>
我正在尝试将 Bootstrap 3 个模态与 AngularJS 结合使用。我有两个按钮:登录和注册,单击它们后我希望弹出一个模式。根据用户选择的按钮,我需要显示适当的内容。为了解决这个问题,我在模态框内使用了 ng-show 和 ng-hide。一切正常,但在这段代码中我的变量 isRegistrationPage
没有改变它的状态。
button.btn.btn-default.navbar-btn.btn-info ng-click="isRegistrationPage=false;open('sm')" Log in
button.btn.btn-default.navbar-btn.btn-warning ng-click="isRegistrationPage=true;open('sm')" Sign up
我几乎使用了来自 https://angular-ui.github.io/bootstrap/#/modal
的原始 JS 部分还有其他管理目标的好方法吗?
您可以在控制器中有两个函数,每个按钮一个,然后从那里调用 open('sm')。
像这样:
$scope.onLoginClicked = function(){
$scope.isRegistrationPage = false;
open('sm');
}
$scope.onSignupClicked = function(){
$scope.isRegistrationPage = true;
open('sm');
}
然后只需在 ng-click 上使用它们
我认为您尝试以错误的方式使用模态服务,尤其是您想要通过 isRegistrationPage 变量的方式。
看看下面的代码片段:
在这里您可以看到我的控制器的一部分,其中 editBlogEntry 方法负责打开模式 window。请注意我可以传递变量的解析部分。
function editBlogEntry(blogEntryId)
{
var modalInstance = $modal.open({
templateUrl: '/ui/app/dilib/partials/blog/blog-entries/blog-entry-form.html',
controller: 'editBlogEntryController as vm',
size: 'lg',
resolve: {
selectedBlogEntryId: function ()
{
return blogEntryId;
}
}
});
modalInstance.result
.then(function (result)
{
logSuccess('Blog entry is modified!');
$route.reload();
});
}
这是控制器的一部分,将在打开模式 window 时实例化。注意 selectedBlogEntryId 这是传递的变量。
var controllerId = 'editBlogEntryController';
angular
.module('dilibApp')
.controller(controllerId, ['$scope', '$modalInstance', 'selectedBlogEntryId', 'common', 'datacontext', 'dataservice.blogentry.helper', editBlogEntryController]);
function editBlogEntryController($scope, $modalInstance, selectedBlogEntryId, common, datacontext, dataServiceBlogEntryHelper)
{ /*... javascript magic ...*/}
HTML部分,可以看到edit方法绑定了一个button元素。
<button class="btn" ng-model="blogEntry.id" ng-click="vm.editBlogEntry(blogEntry.id)">edit</button>