【发布时间】:2018-09-17 13:38:33
【问题描述】:
我有一个对象列表,其中包含标记位置的纬度和经度。 当我尝试将对象列表保存到 javascript var 中并在 for 循环中读取它时,它什么也不做。我不知道哪里出错了。 我试图做的是将列表转换为数组,但即使这样也无济于事。我检查了 Model.Asparaguses 的值,它很好,所以这不是这里的问题。
这是我的 ViewModel:
public class FieldViewModel
{
public Field Field { get; set; }
public object[] ChartData { get; set; }
public Asparagus[] Asparaguses { get; set; }
}
在我看来,这是我的 .js 代码:
<script>
asparaguses = @Html.Raw(Json.Serialize(Model.Asparaguses));
</script>
这是我的外部 .js 代码:
var asparaguses;
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
center: { lat: 51.25202200, lng: 5.710260 },
zoom: 15
});
for (var i = 0; i < asparaguses.length; i++) {
// Create a marker and set its position.
var marker = new google.maps.Marker({
map: map,
position: { lat: asparaguses[i].Lat, lng: asparaguses[i].Long }
});
}
};
编辑:
在我的控制台中出现此错误:
InvalidValueError: setPosition: not a LatLng or LatLngLiteral: in 属性 lat:不是数字
当我记录芦笋数组时,我得到以下输出:
芦笋:[object Object],[object Object],[object Object],[object 对象],[对象对象],[对象对象]
当我记录 1 个芦笋的纬度和经度值时,我看到它们是“未定义的”。但是怎么做呢?
【问题讨论】:
-
您是否检查过该值是否从您的 ViewModel 正确接收?所以第一步是验证一个简单的控制台日志,例如你的 var asparaguses 在你的 js 中设置后是否包含你期望的值?
-
@Saltz 是的,在我的视图模型中,芦笋列表是正确的。但是在我的控制台中,我现在看到我有这个错误: InvalidValueError: setPosition: not a LatLng or LatLngLiteral: in property lat: not a number
-
显示芦笋的控制台输出,如 console.log(asparaguses);
-
@Nisfan 这里:芦笋:[object Object],[object Object],[object Object],[object Object],[object Object],[object Object] 但是当我记录一个变量时1 个芦笋,则值为“未定义”
-
@Svenmarim 看了你的问题,我的问题得到了回答,伙计。我想知道如何将 ViewModel 传递给外部 Javascript,而您的问题回答了所有问题。谢谢哥们。 :)
标签: javascript c# google-maps asp.net-core-mvc