ngif 中的动态变量不起作用

dynamic variable inside ngif not working

我有一段这样的代码

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 期望 Angular expression 常规 javascript 表达式(具有某些限制)。所以想想你在这些情况下写的东西,作为正常的 javascript 表达式。

现在问问自己:!edit{{id}} && imageUrl 有效 javascript 表达式(代码)吗?当然不。 Angular 当无法将提供的表达式作为有效的 javascript 代码进行解析和评估($parse 服务执行此操作)时抛出错误。

但是

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

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

你想做的事是不可能的。正如@dfsq 所说, ngShow 期望 Angular 表达式。您无法通过在 Angular 表达式中插入其名称来访问作用域变量。

你最好的选择是edit一个数组或对象,然后通过索引或键访问它的内容。

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

为什么不做出正确的事情并为该 return 值调用一个方法?

部分代码:

<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;
    }