这是一个相当简单的问题,我在 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指令。
- 1 回答
- 0 关注
- 200 浏览
添加回答
举报
0/150
提交
取消