У меня есть следующая ситуация
directives.directive('x', function () {
return {
scope: {
a: "=",
b: "="
},
controller: function($scope){
if((angular.isDefined($scope.a) && !angular.isDefined($scope.b))
|| (!angular.isDefined($scope.a) && angular.isDefined($scope.b))){
throw new Error('a and b need to be specified');
}
}
};
}
У меня проблема с моим, if
внутри контроллера. Как вы можете видеть, это трудно прочитать, и это не очень эффективно.
То, что он пытается сделать, это увидеть, определены ли как a
и b
в области $scope
. Они могут пропустить, но если один из них указан, другой должен стать обязательным.
Есть ли лучший способ написать это?
Позже отредактируйте: Давайте также расскажем о том, когда случай наличия трех переменных в области видимости, и нам нужно то же самое поведение. Как вы продолжите?
Вы можете использовать функцию isUndefined
if(angular.isUndefined($scope.a) || angular.isUndefined($scope.b))
{
throw new Error('a and b need to be specified');
}
if(!$scope.a != !$scope.b)