2

Я пытаюсь использовать переключатель для управления некоторыми параметрами url изображения. Мой image.marketplace узел является image.url.indexOf('?') и оценивает либо -1, либо положительное целое число, если знак вопроса присутствует в URL-адресе. Я могу получить свое выражение (ng-switch on="{image.marketplace == -1}") для правильной оценки, но это не вызывает правильное условие «когда». Любые мысли о том, почему?Выражение оператора AngularJS оценивается, но не вызывает правильного результата

<span ng-switch on="{image.marketplace == -1}"> 
    <img ng-switch-when="true" ng-src="{{image.value}}?wid=100&hei=100"> 
    <img ng-switch-when="false" ng-src="{{image.value}}&wid=100&hei=100"> 
    <img ng-switch-default  ng-src="{{image.value}}"> 
</span> 

ответ

3

директива ngSwitchOn не требует фигурные скобки, как показано в документации. Это, вероятно, лучше, чтобы сделать что-то вроде этого:

<span ng-switch on="isMarketplaced(image)"> 
    <img ng-switch-when="true" ng-src="{{image.value}}?wid=100&hei=100"> 
    <img ng-switch-when="false" ng-src="{{image.value}}&wid=100&hei=100"> 
    <img ng-switch-default  ng-src="{{image.value}}"> 
</span> 

И в контроллере:

$scope.isMarketplaced = function (image) 
{ 
    return image.marketplace == -1; 
} 

Кроме того, это поможет вам сделать модульные тесты на этой функции.

+0

Прохладный! Я проверю это. Благодаря! – jdstein1

+0

Что-то еще не так ... случай по умолчанию все еще срабатывает. – jdstein1

+0

Я видел это только сейчас, но действительно странно, что у вас есть «истинный» случай, «ложный» случай * и * случай по умолчанию. Они не являются взаимоисключающими, что, я думаю, не очень ценится AngularJS. Удалите «ложный» случай и замените его по умолчанию. – Blackhole