2015-10-06 2 views
2

У меня есть кусок кода, как этотдинамическая переменная внутри не ngif работает

ng-show="!edit{{id}} && imageUrl" 

Но это не похоже на работу. Где находится

ng-show="!edit1 && imageUrl" 

работает. Есть ли проблема в синтаксисе?

Фактическая часть кода

template: '<div id="dropTarget{{imageid}}" ng-show="edit{{imageid}}">'+ 
      '<img id="imageView{{imageid}}" ng-src="{{imageUrl}}" />'+ 
     '</div>'+ 
     '<img id="imageView{{imageid}}" ng-if="!edit{{imageid}} && imageUrl" ng-src="{{imageUrl}}" alt="Coach"/>'+ 
     '<div class="my-new-photo" ng-if="!edit{{imageid}} && !imageUrl">+</div>'+ 
     '<span class="edit-info" ng-click="showUploadImageOptions(imageid)" ng-show="!edit{{imageid}} && imageUrl">EDIT</span>'+ 
     '<span class="edit-info" ng-click="showUploadImageOptions(imageid)" ng-show="!edit{{imageid}} && !imageUrl">NEW</span>'+ 
      '<div ng-show="edit1" class="buttons-section">'+ 
       '<form enctype="multipart/form-data" method="post">'+ 
        '<input type="file" name="filesToUpload{{imageid}}" id="filesToUpload{{imageid}}" style="display:none;"/>'+ 
        '<span class="upl-sav-can" ng-click="uploadImage(imageid)">Browse</span>'+ 
        '<span class="upl-sav-can" ng-click="revertImage(imageid)">Cancel</span>'+ 
       '</form>'+ 
      '</div>', 
+0

Изменить все '{{ID}}' на '+«id'' – JimmyRare

ответ

1

ngShow ожидает Angular expression, который является своего рода регулярного выражения яваскрипта (с определенными ограничениями). Поэтому подумайте о том, что вы пишете в этих случаях, как обычное выражение javascript.

Теперь спросите себя: есть !edit{{id}} && imageUrl действительное выражение (код) javascript? Конечно же нет. Угловая ошибка при условии, что выражение не может быть проанализировано и оценено ($parse сервис делает это) как действительный код javascript.

Однако

ng-show="!edit[id] && imageUrl" 

бы допустимое выражение с использованием обозначений кронштейна для доступа к переменному свойству объекта/массива. Это то, что вам нужно использовать в этом случае.

+0

, но его не массив. в JS, если я скажу, что это похоже на «edit» + id – Hacker

+0

Тогда это будет 'ng-show ="! (edit + id) && imageUrl "'. – dfsq

+0

@dfsq Я хочу использовать это условие в случае проверки формы как: - 'ng-if =" {{formName}}. {{InputFieldName + $ index}}. $ Dirty "' В этом случае, как использовать динамическое ** имя ** внутри 'ng-if =" "' –

2

То, что вы пытаетесь сделать, невозможно. Как @dfsq сказал, ngShow ожидает Угловое выражение. Вы не можете получить доступ к переменной области, путем интерполяции ее имени в выражении с угловым выражением.

Ваши лучшие варианты - сделать edit массив или объект, а затем получить доступ к его содержимому с помощью индекса или ключа.

ng-show="!edit[id] && imageUrl" 
0

Почему бы не сделать правильно и вызвать метод для этого возвращаемого значения?

Частичный код:

<span class="edit-info" ng-click="showUploadImageOptions(imageid)" ng-show="returnEditId(imageid) && imageUrl">EDIT</span> 

JS:

$scope.returnEditId = function(id){ 
     if(!$scope.edit[id]) 
     return false; 
     else 
     return true; 
    } 
Смежные вопросы