我有一段像这样的代码
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 :(得分:2)
你想要做的是不可能的。正如@dfsq所说,ngShow
需要Angular表达式。您无法通过在Angular表达式中插入其名称来访问范围变量。
您最好的选择是使edit
成为一个数组或一个对象,然后通过索引或键访问它的内容。
ng-show="!edit[id] && imageUrl"
答案 1 :(得分:1)
FDate_Time.Modified := (FDate_Time.Modified) or
(not SameDateTime(FDate_Time.FieldValue,
FCalendarEdit.Date + FTimeEdit.Time));
期望Angular expression 种常规javascript表达式(有一定限制)。所以想想你在这些情况下所写的内容,就像普通的javascript表达一样。
现在问问自己:ngShow
是否有效的javascript表达式(代码)?当然不。当提供的表达式无法被解析和评估($parse服务执行此操作)作为有效的JavaScript代码时,Angular会抛出错误。
然而
!edit{{id}} && imageUrl
是使用括号表示法访问对象/数组的变量属性的有效表达式。这是您在这种情况下需要使用的内容。
答案 2 :(得分: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;
}