我知道这已经被讨论过很多次,大多数文章都引用了这段代码:Modal window with custom URL in AngularJS
但我就是不明白。我觉得这根本不是很清楚。我还发现这个jsfiddle实际上很棒,非常有帮助,除了它不添加 url 并允许我使用后退按钮关闭模式。
编辑:这是我需要帮助的。
所以让我试着解释一下我想要达到的目标。我有一个添加新项目的表格,我有一个链接“添加新项目”。我想当我单击“添加新项目”时会弹出一个模式,其中包含我创建的“add-item.html”表单。这是一个新状态,因此 url 更改为 /add-item。我可以填写表格,然后选择保存或关闭。关闭,关闭模态:p(多么奇怪)。但我也可以单击返回以关闭模式并返回上一页(状态)。 在这一点上,我不需要 Close 的帮助,因为我仍在努力让模态正常工作。
这是我的代码:
导航控制器:(这甚至是放置模态函数的正确位置吗?)
angular.module('cbuiRouterApp')
.controller('NavbarCtrl', function ($scope, $location, Auth, $modal) {
$scope.menu = [{
'title': 'Home',
'link': '/'
}];
$scope.open = function(){
// open modal whithout changing url
$modal.open({
templateUrl: 'components/new-item/new-item.html'
});
// I need to open popup via $state.go or something like this
$scope.close = function(result){
$modal.close(result);
};
};
$scope.isCollapsed = true;
$scope.isLoggedIn = Auth.isLoggedIn;
$scope.isAdmin = Auth.isAdmin;
$scope.getCurrentUser = Auth.getCurrentUser;
$scope.logout = function() {
Auth.logout();
$location.path('/login');
};
$scope.isActive = function(route) {
return route === $location.path();
};
});
这就是我激活模式的方式:
<li ng-show='isLoggedIn()' ng-class='{active: isActive("/new-item")}'>
<a href='javascript: void 0;' ng-click='open()'>New Item</a>
</li>
新项目.html:
<div class="modal-header">
<h3 class="modal-title">I'm a modal!</h3>
</div>
<div class="modal-body">
<ul>
<li ng-repeat="item in items"><a ng-click="selected.item = item">{{ item }}</a></li>
</ul>Selected:<b>{{ selected.item }}</b>
</div>
<div class="modal-footer">
<button ng-click="ok()" class="btn btn-primary">OK</button>
<button ng-click="close()" class="btn btn-primary">OK</button>
</div>
此外,虽然这确实打开了一个模式,但它并没有关闭它,因为我无法解决这个问题。