【问题标题】:how to pass mvc controller actionresult parameters to angularjs controller如何将 mvc 控制器 actionresult 参数传递给 angularjs 控制器
【发布时间】:2017-04-21 06:09:30
【问题描述】:

在我的应用程序中,我试图将 mvc 控制器参数传递给角度控制器。因为我想从另一个 api 获取数据。

MVC 控制器

public ActionResult Hotel(long hotelCode, string Destination)
{ return View(model); }

在视图中,我将模型传递给脚本。所以我可以获取角度参数。

查看

<script type="text/javascript">
var data = @Html.Raw(Json.Encode(Model));</script>

AngulerJS 控制器

app.controller('ctrl', function ($scope, $q, $window, studentService, filterFilter) {
$scope.datax = $window.data;
$scope.saveSubs = function () {
    var sub = {
        Des: $scope.datax.HotelCode,
        DepartureDate: $scope.datax.Des
    };
    var saveSubs = APIService.hotelavailability(sub);
    saveSubs.then(function (d) {
        console.log("Succss");
            $scope.respData = d.data.hotels;
    }, function (error) {
        console.log('Oops! Something went wrong while saving the data.');
        alert("Oops! Something went wrong while saving the data.");
    });

    };
});

他们有什么方法可以在不将参数传递给角度控制器的情况下调用 api 并将数据绑定到视图?

【问题讨论】:

  • 您是否尝试过使用ng-init 将您的数据设置或初始化到ng 控制器
  • 我认为这是一种错误的做法,原因有很多:1)您应该尽量将前端应用程序与后端应用程序分开,这样可以防止两者之间发生冲突前端和后端团队,并根据接口和完全不同的堆栈进行单独管理,从而提高工作效率; 2)不要尝试将数据作为全局变量传递,会污染全局范围,意义不大; 3)与(1)相关,您可以使用任务运行器或捆绑器在初始化数据的脚本之间切换,可以创建角度常量或将 HTML 添加到 $templateCache 中; ...继续
  • 4) 如果您需要来自服务器的数据,您不妨创建一个 $http 调用或使用指向正确方向的模板 url; 5)尝试将您的 HTML 保存在您的角度模板中,而不是从服务器端代码生成 HTML,然后从服务器获取必要的数据并将其绑定到您的模板,这将允许在 $templateCache 中缓存您的模板,但您也可以使用将 HTML 捆绑到 JS 代码中以缓存它们并防止多次调用的插件; 6) 不要调用你的控制器ctrl 并将你的代码拆分到多个模块、组件、指令、过滤器……
  • 实际上我想从hotelbeds api获取数据并绑定到视图。但参数在另一个视图中。这就是问题所在。

标签: javascript angularjs asp.net-mvc asp.net-mvc-4


【解决方案1】:

您的变量数据应该可以作为全局变量访问,而无需注入 $window。

$scope.datax = data;

如果感觉不舒服,您也应该可以直接访问 window 变量:

$scope.datax = window.data;

如果您更新该值,直接在模板中绑定可能会导致问题,因为在控制器范围之外的全局变量上没有设置监视。

【讨论】:

    猜你喜欢
    • 2015-09-13
    • 2022-10-31
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多