2016-11-11 2 views
0

Я написал такой небольшой угловой фрагмент кода:

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 получает ret значение urn функции get_init_white_sld(). Однако, когда он попадает внутрь функции 'is_soldier', тогда $ scope.white_sld становится неопределенным. Мой вопрос: почему и как я могу его решить?

+1

Что такое '' 'get_init_white_sld'''? – tymeJV

+0

Я добавил его в фрагмент кода – CrazySynthax

+2

'get_init_sld_line' ничего не делает. Вы объявляете массив, нажимаете на него, а затем ничего не делаете с этим массивом. Вы забываете 'return'/ – tymeJV

ответ

1

Это потому, что в этой функции вы должны использовать $scope.white_sld, а не только white_sld.

Смежные вопросы