这是一个相当简单的问题,我在 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以某种方式将我的值传递给控制器。
收到一只叮咚
相关分类