我写了以下小角度代码片段:
html文件:
<body ng-controller="myCtrl">
<div class="container">
....
</div>
</body>
javascript文件:
app.controller('myCtrl', function($scope) {
$scope.white_sld = get_init_white_sld();
$scope.get_soldier_style = function is_soldier(loc) {
var sld_color = get_soldier_color(loc);
if (sld_color == "") {
return ""; // no soldier in this square
} else {
return {
'width': '80%', 'height': '80%', 'border-radius': '80%', 'background-color': sld_color,
'margin': 'auto auto', 'vertical-align': 'middle'
}
}
function get_soldier_color(loc) {
for (var i = 0; i < white_sld.length; i++) {
if ((loc[0] == white_sld[i][0]) && (loc[1] == white_sld[i][1])) {
return "white"
}
}
for (var i = 0; i < black_sld.length; i++) {
if ((loc[0] == black_sld[i][0]) && (loc[1] == black_sld[i][1])) {
return "black"
}
}
return ""; // no soldier found
}
}
});
function get_init_sld_line(x_loc, y_loc, color) {
var line_sld = [];
for (var i = 0; i < 4; i++) {
line_sld.push(new Soldier(x_loc + 2 * i, y_loc, color));
}
return line_sld;
}
function get_init_white_sld() {
var init_white_sld = [];
init_white_sld.push(get_init_sld_line(0, 0, "white"));
init_white_sld.push(get_init_sld_line(1, 1, "white"));
init_white_sld.push(get_init_sld_line(0, 2, "white"));
return init_white_sld;
};
我对此代码的问题是在“$ scope.white_sld = get_init_white_sld();”之后,$ scope.white_sld获取函数get_init_white_sld()的返回值。但是,当它进入函数'is_soldier'时,$ scope.white_sld变为未定义。我的问题是为什么以及如何解决它?
答案 0 :(得分:1)
那是因为您应该在该功能中使用$scope.white_sld
,而不仅仅是white_sld
。
答案 1 :(得分:0)
我已更新了plunkr,请检查
实际上你忘了在get_init_sld_line函数中添加return语句。
https://plnkr.co/edit/kYebs1pFznaDpHlFDodK?p=preview
return line_sld;