为了账号安全,请及时绑定邮箱和手机立即绑定

AngularJs - 内联作用域变量赋值

AngularJs - 内联作用域变量赋值

C#
慕桂英4014372 2021-11-07 18:49:08
这是一个相当简单的问题,我在 C# MVC 中使用 AngularJS v1.7.2。我得到了布局页面和视图的标准设置。我从外部脚本文件加载我的 AngularJs 控制器/服务,因此视图上没有任何内容。我的问题是我想将 ViewBag 中的值分配给控制器变量,但我显然无法在脚本中引用 ViewBag,因为它需要在 cshtml 页面上完成。我试过在 ng-init 中这样做<div ng-init="City = @ViewBag.City"></div>或者<div style="visibility: hidden;">{{CityId = '1'}}</div>我尝试了和我在 StackOverflow 上看到的其他几个变化{{City = @ViewBag.City}},'@ViewBag.City'但无济于事。我使用以下方法在视图上加载我的脚本:@section Page_Scripts {    @Scripts.Render("~/angular/ngListing")}这显然是在布局中加载的。我的控制器工作正常,所以这不是问题。我的控制器在初始化时进行 ajax 调用,此时我需要$scope.City填充正确的值,但它始终设置为 0。这是我的控制器 + 服务(为了 SO 合并)的样子:_mainApp.controller("ListingCtrl", function ($scope, $http) {    $scope.City = 0;    $scope.Attractions = [];    $scope.Offset = 0;    $scope.Pages = new Array(10);    var MakeRequest = function (offset) {        $http.post("/City/GetStuff?City=" + $scope.City + "&Offset=" + offset).then(function (resp) {            $scope.Attractions = resp.data;        });    }    MakeRequest($scope.Offset);    $scope.PageUp = function () {        $scope.Offset++;        MakeRequest($scope.Offset);    }    $scope.PageDown = function () {        $scope.Offset--;        MakeRequest($scope.Offset);    }    $scope.GoTo = function (offset) {        $scope.Offset = offset;        MakeRequest(offset);    }});任何不是hacky-ish的解决方案将不胜感激。它可以包含指令或一种将值分配给 $scope.City 但内联的方法,或者至少ViewBag.City以某种方式将我的值传递给控制器。
查看完整描述

1 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

在ng-init指令中使用函数:


<div ng-init="initCity(@ViewBag.City)"></div>

在控制器中定义函数:


$scope.initCity = function(city) {

    $scope.city = city;

    MakeRequest($scope.offset, $scope.city);

};


function MakeRequest(offset,city) {

    var url = "/City/GetStuff";

    var params = {city:city, offset:offset};

    var config = {params: params};

    $http.get(url,config).then(function (resp) {

        $scope.Attractions = resp.data;

    });

}

这样控制器将等待ng-init指令。


查看完整回答
反对 回复 2021-11-07
  • 1 回答
  • 0 关注
  • 200 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信