首页 新闻 会员 周边

mvc和angularjs 写法的疑问 求救 谢谢大侠

0
悬赏园豆:10 [已解决问题] 解决于 2016-06-17 17:02

如图:

 

复制代码
<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地址 前面的变。

 

注:图片看不清 右击打开 。

s_p的主页 s_p | 初学一级 | 园豆:138
提问于:2016-06-16 10:47
< >
分享
最佳答案
0

当你在用Angular的时候,就不要用太多MVC的路由特性。这两者实际上是有冲突的。

收获园豆:6
幻天芒 | 高人七级 |园豆:37175 | 2016-06-16 11:12

如何解决呢?星哥 我在数据写死 href 不行 (本地运行地址是没有错 部署上去就不对了)

s_p | 园豆:138 (初学一级) | 2016-06-16 11:15

@s_p: 全部用事件跳转,然后在后台统一处理。然而并不好。我的建议就是,不要把这两者混用,计算用mvc,也就返回一个index首页,其他的交给angular吧。

幻天芒 | 园豆:37175 (高人七级) | 2016-06-16 11:35

@幻天芒: 能具体一点吗? 你说用事件跳转?哪这样咯 /oa/pms/Task 发布的地址是这个 我就绑定Task  oa/pms 这些用js去处理了。 本地的没有。获取浏览器的地址特殊处理?

s_p | 园豆:138 (初学一级) | 2016-06-16 11:41

@幻天芒: angular太高深的 我不会 我目前还是用一些绑定 和一些基本的运用

s_p | 园豆:138 (初学一级) | 2016-06-16 11:42

@s_p: angular是前端渲染,mvc默认后端渲染。一起用很别扭的。另外,既然线上的不对。本地对的,那可能是url前缀不一致,把这个用js重新计算一下,拼接起来就成了。

幻天芒 | 园豆:37175 (高人七级) | 2016-06-16 12:03

@幻天芒: 是的 就是这样解决的

s_p | 园豆:138 (初学一级) | 2016-06-17 17:01
其他回答(1)
0

你再好好想想。

ng-repeat啥时候执行,在哪里执行;

Url.Action啥时候执行,在哪里执行。

angularjs 是有自己的路由的。

收获园豆:4
写代码的小2B | 园豆:4371 (老鸟四级) | 2016-06-16 11:05

angjs 我就用了下 绑定 

我现在的疑问就是   Url.Action("x.actionName", "x.controllerName")这里x.actionName怎么写? 我的{{x.menuName}}出来了,数据没有问题。

支持(0) 反对(0) s_p | 园豆:138 (初学一级) | 2016-06-16 11:08

@s_p: 

@Url.Action在服务器端执行,对吧?

ng-repeat在哪里执行呢?在客户端由浏览器执行。

再多想想。

支持(0) 反对(0) 写代码的小2B | 园豆:4371 (老鸟四级) | 2016-06-16 11:12

@写代码的小2B: 这个我知道了。

支持(0) 反对(0) s_p | 园豆:138 (初学一级) | 2016-06-16 11:13

@写代码的小2B: 是的

支持(0) 反对(0) s_p | 园豆:138 (初学一级) | 2016-06-16 11:14

@写代码的小2B: 哪如何解决呢?朋友  你说的这个我明白。

支持(0) 反对(0) s_p | 园豆:138 (初学一级) | 2016-06-16 11:27

@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;

如果你仅仅想要使用数据绑定,有其他更好的选择。

Vue.jsavalonjs

支持(0) 反对(0) 写代码的小2B | 园豆:4371 (老鸟四级) | 2016-06-16 13:00

@写代码的小2B: 明白 谢谢了 差不多 类似这种方式实现

支持(0) 反对(0) s_p | 园豆:138 (初学一级) | 2016-06-17 17:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册