angularjs - AngularJS ui-router - 生成返回当前网址
问题描述
我是 angularjs 的新手,一直在寻找这个问题的答案,但不幸的是我找不到答案。我知道 angular (1.x) 比较老,但我仍然想学习这个。
继续前进,我正在尝试基于模块控制器内的$scope.menu_item对象动态生成链接。例如,如果
$scope.menu_items = ['Home','Profile','Settings']
数组中的值对应于父状态 User 的子状态,并使用$stateProvider.state()进行配置
$stateProvider
.state('user'{
url:'/user',
abstract:true,
templateUrl:'someTemplateThatSeemsToWork',
controller:'MenuCtrl'})
//these are the child states
.state('user.Home',{
url:'/home',
template:'<p>Home</p>' (this is loaded in the template of its parent)
})
.state('user.Profile',{
url:'/profile',
template:'<p>Profile</p>'
})
.state('user.Settings',{
url:'/settings',
template:'<p>Settings</p>'
})
然后在模板中使用 ng-repeat:
<li ng-repeat="menu_item in menu_items">
<a ui-state="user.{{menu_item}}">{{menu_item}}</a>
</li>
正如预期的那样,它正确地呈现了视图,来自$scope.menu_items的值被正确地制作成链接,但标签的 href="" 属性等于当前 url。
默认状态是“user.Home”,因此/user重定向到/user/home (localhost:[port]/user/home)
<a ui-state="user.Home" class="ng-binding" href="/user/home">Home</a>
...
<a ui-state="user.Profile" class="ng-binding" href="/user/home">Profile</a>
...
<a ui-state="user.Settings" class="ng-binding" href="/user/home">Settings</a>
在这里,我们看到所有生成的标签都将 href 值设置为当前 url(localhost:[port]/user/profile 将使其变为 href="/user/profile")
那么有什么我忘记做的吗?据我了解,当我使用 ui-state 时它应该可以工作,因为它可以处理 $scope 属性。
一些附加说明:
1.) 在地址栏中手动输入指定的状态 url 可以正常工作并呈现正确的模板
2.) 我正在使用 Express 来处理服务器端
3.) 我设置 $locationProvider.html5Mode(true)
临时解决办法
对于可能偶然发现这个问题的人,我暂时使用了一个变通解决方案,只是删除了ui-sref=""或ui-state=""并使用了
ng-href={{state.url}}
和
ng-repeat= "state in states"
在哪里
states = [{name="stateName", url="/relativeToRootUrl"},{..more States}]
我仍然很欣赏使用 ui-sref 的解决方案,因为它更多地使用了 ui-router。
解决方案
推荐阅读
- php - PHP file() - 无法打开流:连接超时
- css - CSS 网格模板列:未为项目设置高度
- java - 时区偏移 +AA:BB 的 SimpleDateFormat 问题
- r - 在 R 中使用 Kable 的热图表
- java - 如何在 Stream Java8 中进行计算操作?
- sql - 如何从字段中具有非空值的文件中对记录进行 sql 查询
- angular - 如何在 Akita 中声明查询/服务以便在另一个模块中使用它
- python - 将一个数字分成更小的特定数字
- android - 从 Flutter 打开 Android Activity 和 iOS ViewController
- excel - 如何导入 Outlook 报表项数据?