1

我一直在网上搜索,但似乎无法找到一个好的答案......

这是将控制器/操作 URL 传递给 Angular 的正确方法吗?

<div ng-controller="MainCtrl" 
    ng-init="getScheduleUrl = '@(Url.Action("GetSchedule"))'">

或者有更好的方法吗?如果我要传递很多 URL,这可能会很快变得非常混乱。

4

2 回答 2

2

嗨,有很多方法,但我喜欢这个:

通常在我的主页/索引视图上

<script>
  angular.module('app').factory('dataStrap', function ()
    {

        var _data = @Html.Raw(ViewBag.Json);
        var _getScheduleUrl = @(Url.Action("GetSchedule");
        //or 
        var _someUrls =[
                          {urla: @(Url.Action("GetSchedule")}
                          {urlb: @(Url.Action("GetSchedule")}
                        ];
        return {
            data : _data,
            getScheduleUrl : _getScheduleUrl,
            someUrls :_someUrls 
        }

   angular.module('app').controller('myController', function($scope, dataStrap){

       $scope.ScheduleUrl = dataStrap.getScheduleUrl;

   })

</script>

之后,您可以将 dataStrap 注入任何控制器,然后......瞧!

于 2014-07-17T22:54:12.230 回答
1

刚开始使用 Angular 时,这很诱人,但我不喜欢“双模板”方法。将 Angular 视为另一个客户端会有所帮助,就像您的 Android 或 iOS 应用程序与您的 Web API 断开连接一样。这提供了客户端和服务器之间的清晰分离。在 Angular(和大多数类型的客户端)中,有一个中间层从服务器 API 中抽象出核心 UI 代码。Angular 将此层称为服务

这是一个很好的例子,说明了这些部分是如何组合在一起的(我会使用$resource而不是所有这些$http调用)。

于 2014-07-18T02:49:53.977 回答