繁体   English   中英

遍历javascript中的列表

[英]Iterate through list in javascript

我正在使用Google Maps API开发.NET MVC 4 Web应用程序。

在这个项目中,我必须在地图上表示几个多边形。 我想到的解决方案是在database创建两个表,一个表具有每个多边形的标识符,另一个表保存每个多边形每个角的纬度和经度。 现在,我必须将这些多边形加载到“视图”中的地图上。

我试图通过在ViewBag加载列表并在脚本中进行遍历来实现此ViewBag ,该脚本将表示地图中的多边形。 我发送给ViewBagList<List<string[]>> “主”列表的每个成员代表一个多边形,该多边形由多个标记( List<string[]> )组成。 string[]我保存每个标记的纬度,经度和描述。

我现在的问题是遍历Javascript此类列表。 那有可能吗? 还是有我没有考虑过的更流畅的解决方案?

谢谢!

您可以执行以下操作:

 <script>
   var arr = '@YourList`;

   arr .forEach(function(item) {
     // whatevery you want here
   });
 </script>

我要做的是将一个对象中的数据传递到您的视图,然后在您的视图中使用@Html.Raw(Json.Encode(polygons)) 下面的例子。

C#模型:

public class Polygon {
  public string Name { get; set; } // name of polygon
  public List<string> Markers { get; set; } // list of markers
}

MVC控制器:

List<Polygon> polygons = ...; // List of Polygons, retrieved from database

return View(polygons);

剃刀视图:

@model List<Polygon>

<script>
  var polygons = @Html.Raw(Json.Encode(Model)); // will render as var polygons = [ { Name: 'Polygon1', Markers: [ 'marker1', 'marker2' ] }, { Name: 'Polygon2', Markers: [...] } ];

  // from @Kosmo's answer
  polygons.forEach(function(polygon) {
    console.log('Name is ' + polygon.Name);
    console.log('Markers are ' + polygon.Markers.join(','));
  });
</script>

最后得到的是JSON格式的列表,该列表是您在Controller中创建该列表时传入的数据。

是的,如果您将ViewBag值保存在javascript的变量中,则已经可以。

您可以这样做:

<script>
var myViewBagValue = '@ViewBag.NameOfViewBag';

//then you can iterate using one of all those ways that javascript provides

//every(), filter(), forEach(), map(), some() and etc.

</script>

这样,您的内容将始终存储在javascript值中,并且您可以毫无问题地进行操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM