Я создал директиву по угловому, который получает 5 параметров, а один из них является необязательным массивом. То, как я пытаюсь справиться с этим, как следует:Необязательный параметр на угловой директиве
app.directive('fooDirective', function() {
return {
restrict: 'AE',
scope: {
param1: '=',
param2: '=' // optional array
},
template: //...
"<div ng-class='defineClass()'> Message </div>"
//...
controller: function($scope) {
if (typeof $scope.param2 === 'undefined')
$scope.param2 = [];
console.log($scope.param2);
$scope.defineClass = function() {
if ($scope.param2.length == 0) return 'gray-text';
return 'red-text';
};
// ......
}
}
});
В какой-то момент в моем коде я проверяю для .length
из param2
, и если это не определено, что выбрасывает много ошибок. Что меня заводит, так это то, что в console.log()
вы видите []
, что указывает на то, что .length
моего параметра должен быть 0, а ошибки на консоли отображаются после выхода на консоль.log().
Так что, я думаю, что у меня что-то не хватает ни о том, как Угловая привязка областей или потока, которые построена в директиве. Я попытался проверить свой параметр на фазах link
и compile
и получил ту же проблему.
Итак, что мне здесь не хватает? Заранее спасибо.
Добавьте '' сделать необязательным? (Например, 'param2:«? =» ') – ryanyuyu
* В какой-то момент в моем коде я проверяю для .Протяжённость Param2 *: где этот код? –
Вот код, который проверяет: if ($ scope.param2.length == 0) –