【发布时间】:2017-11-17 19:49:48
【问题描述】:
正在做一个项目,目前使用 Knockout.JS 作为我的 MVVM 框架。我正在尝试一些基本操作,例如使用markersArray['Tiong Bahru Station (EWL)'] 之类的简单方法访问我的特定markersArray 对象的值。我知道由于存在空格,我必须使用方括号表示法。但是,当我 console.log 这个,以及在我的代码中,它没有任何价值。
代码如下:
JS
在 scripts.js 文件中:
var stationList = [
{name: "Tiong Bahru Station (EWL)", marker: markersArray['Tiong Bahru
Station (EWL)']}
console.log(markersArray['Tiong Bahru Station (EWL)']); // Returns undefined
在 maps.js 文件中:
var markersArray = {};
for (var i = 0; i < markers.length; i ++) {
marker = new google.maps.Marker({
position: markers[i].position,
map: map,
animation: google.maps.Animation.DROP
});
var name = markers[i].name;
markersArray[name] = marker;
}
var markers = [
{name:"Tiong Bahru Station (EWL)", position: {lat:1.28498, lng:103.82283}}
];
我去 console.log 检查了我的标记数组,以确保它正确构建并正确填充。希望能帮助我弄清楚为什么我只使用密钥访问值没有得到任何价值。
【问题讨论】:
-
这还不足以给你任何答案。您迭代以填充 markersArraty 对象的标记数组是什么,顺便说一句,这是一个可怕的对象名称。您还必须确保 maps.js 在 script.js 之前运行该代码
-
您的对象似乎有点乱。
stationList是您正在定义的数组,但没有定义markersArray,因此定义stationList失败。在您更新的第二个 sn-p 中,没有 Arraymarkers所以也失败了。我建议你制作一个你希望能起作用的 sn-p,然后社区可以提供建议。 -
我添加了新代码,是的,maps.js 在 scripts.js 之前运行。我可以 console.log(markerArray) 在 scripts.js 中,我可以看到整个对象。是的,我将重命名该对象,正在玩耍,所以我忘记了我的命名约定。大声笑
-
@user3094755 我已经添加了新代码。
标签: javascript mvvm knockout.js