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;
}
我有一段这样的代码
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;
}