Angularjs ngif内的动态变量不工作

Angularjs ngif内的动态变量不工作,angularjs,angular-ng-if,Angularjs,Angular Ng If,我有一段这样的代码 ng-show="!edit{{id}} && imageUrl" 但这似乎不起作用。何处为 ng-show="!edit1 && imageUrl" 工作。语法有问题吗 实际代码段 template: '<div id="dropTarget{{imageid}}" ng-show="edit{{imageid}}">'+ '<img id="imageView{{imageid}}" ng-s

我有一段这样的代码

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>',
模板:“”+
''+
''+
''+
'+'+
“编辑”+
“新的”+
''+
''+
''+
“浏览”+
“取消”+
''+
'',

ngShow
需要一种正则javascript表达式(有一定的限制)。因此,请将您在这些情况下编写的内容视为正常的javascript表达式

现在问问你自己:这是
!编辑{{id}&&imageUrl
有效的javascript表达式(代码)?当然,不会。当提供的表达式不能作为有效的javascript代码进行分析和计算(服务会这样做)时,Angular会抛出一个错误

然而

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

将是使用括号表示法访问对象/数组的变量属性的有效表达式。这就是您在这种情况下需要使用的功能。

您尝试执行的操作是不可能的。正如@dfsq所说,
ngShow
需要角度表达式。不能通过在角度表达式中插入作用域变量的名称来访问它

最好的选择是使
编辑
数组或对象,然后通过索引或键访问其内容

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

为什么不做正确的事情并为返回值调用一个方法呢

部分代码:

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

但它不是数组。在JS中,如果我说它类似于'edit'+id,那么它将是
ng show=“!(edit+id)&&imageUrl”
@dfsq,我想在表单验证中使用这个条件,比如:-
ng if=“{{formName}.{inputFieldName+$index}.$dirty”
在这种情况下,我应该如何在
ng if=“
中使用动态名称来更改所有
{id}
+“id”
    $scope.returnEditId = function(id){
        if(!$scope.edit[id])
         return false;
        else
         return true;
    }