如图:
<div class="col-sm-1 col-md-1 sidebar" ng-controller="msgCtrl"> <div class="leftPanel ThemeBGColor3 "> <a href="javascript:void"><span class="avatar-face"><span class="avatar-text">@ViewBag.userName</span></span></a> <ul class="nav" ng-repeat="x in menuData"> @if (x.menuId == 1) { <li><a class="active" href="@Url.Action("x.actionName", "x.controllerName")">x.menuName</a></li> } else { <li><a href="@Url.Action("x.actionName", "x.controllerName")">x.menuName</a></li> } </ul> </div> <div class="leftmenuContent hide"> </div> <div class="leftmenu_footer"> <span class="glyphicon glyphicon-plus p" aria-hidden="true"> </span> </div> <input type="hidden" id="apiUrl" value="@ViewBag.ApiUrl" /> </div> <script> window.longinUrl= '@Url.Action("Index", "Login")'; </script> <script src="~/Scripts/angular.min.js"></script>
menuData是数据源 从数据库取出的
数据菜单配置
因为地址的问题 用了 Url.Action("x.actionName", "x.controllerName") 。请问如何解决这个问题呢 。不用Url.Action地址 前面的变。
注:图片看不清 右击打开 。
当你在用Angular的时候,就不要用太多MVC的路由特性。这两者实际上是有冲突的。
如何解决呢?星哥 我在数据写死 href 不行 (本地运行地址是没有错 部署上去就不对了)
@s_p: 全部用事件跳转,然后在后台统一处理。然而并不好。我的建议就是,不要把这两者混用,计算用mvc,也就返回一个index首页,其他的交给angular吧。
@幻天芒: 能具体一点吗? 你说用事件跳转?哪这样咯 /oa/pms/Task 发布的地址是这个 我就绑定Task oa/pms 这些用js去处理了。 本地的没有。获取浏览器的地址特殊处理?
@幻天芒: angular太高深的 我不会 我目前还是用一些绑定 和一些基本的运用
@s_p: angular是前端渲染,mvc默认后端渲染。一起用很别扭的。另外,既然线上的不对。本地对的,那可能是url前缀不一致,把这个用js重新计算一下,拼接起来就成了。
@幻天芒: 是的 就是这样解决的
你再好好想想。
ng-repeat啥时候执行,在哪里执行;
Url.Action啥时候执行,在哪里执行。
angularjs 是有自己的路由的。
angjs 我就用了下 绑定
我现在的疑问就是 Url.Action("x.actionName", "x.controllerName")这里x.actionName怎么写? 我的{{x.menuName}}出来了,数据没有问题。
@s_p:
@Url.Action在服务器端执行,对吧?
ng-repeat在哪里执行呢?在客户端由浏览器执行。
再多想想。
@写代码的小2B: 这个我知道了。
@写代码的小2B: 是的
@写代码的小2B: 哪如何解决呢?朋友 你说的这个我明白。
@s_p:
吃午饭了吗?
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body ng-app="app" ng-controller="ctrl"> <a ng-href="{{getUrl(model)}}" ng-bind="model.text"></a> <script src="http://cdn.bootcss.com/angular.js/1.5.6/angular.min.js"></script> <script> angular.module('app', []) .controller('ctrl', function ($scope) { $scope.model = { 'controller': 'bai', 'action': 'du', 'text': '百度' }; $scope.getUrl = function (model) { return model.controller + '/' + model.action;//你自己拼 }; }); </script> </body> </html>
上面是你问题的解决方法,但是不推荐你这样用。
angular是为单页面设计的;
angular和你服务器端使用什么技术没有关系,一般来说服务器端只需要提供数据接口;
angular比较适合web app;
如果你仅仅想要使用数据绑定,有其他更好的选择。
@写代码的小2B: 明白 谢谢了 差不多 类似这种方式实现