我是Javascript的新手。我有两个模型Unit
和Site
。
Unit
有很多Sites
,这就是我从视图中传递它们的方式:
<a href="#" ng-click="destroyUnit(unit.id, unit.sites)" ></a>
这是我的angularJS控制器中的功能:
$scope.destroyUnit = function(unit_id, sites){
console.log(unit_id)
$scope.$emit("units.delete", unit_id, sites);
}
$scope.$on("units.delete", function(e, unit_id, sites){
console.log("unit_id: "+unit_id+", site_length: "+sites.length+", site_id "+sites[0].id);
});
这是我得到的输出:
unit_id: 439, site_length: 2, site_id undefined
我只是想知道为什么site_id
是undefined
?我怎么才能得到它? TNX。
为了更好的解释;我只想从sites
删除unit
;在这种情况下,site.id=443
我已经尝试了sites[0][0].id
,但我得到了:
TypeError: Cannot read property '0' of undefined
答案 0 :(得分:0)
从截图中可以清楚地看出sites
是一个长度为2的数组。
sites是一个分配为
的数组变量sites = [
[{article: null, clip: {....}, id: 443}],
[{...................}]
]
sites
中的每个项目都是一个数组,所以你必须这样做
sites[0][0].id
答案 1 :(得分:0)
您必须删除代码中的冗余array wrap
。
现在:
sites[0] // [{id: 443, ...}]
因此,您只能使用
访问IDsites[0][0].id // 443
现在格式化:
sites: [[{article: null, clip: {....}, id: 443}], {}],
unit_id: 45
格式正确:
sites: [{article: null, clip: {....}, id: 443}, {}],
unit_id: 45