我有一个ngRepeat
元素,其中包含一个触发确认消息的删除按钮。我正在尝试使用动态表达式来显示确认消息:
<div ng-repeat="item in items">
<a ng-click="delete(item_id)"></a>
<span ng-show="{{item._id}}_delete">Are you sure you want to delete your review? </span>
</div>
我不确定这是否是创建动态表达式的正确方法,但这是我能让表达式至少在html中生成的唯一方法。
但是我收到所有重复项目的错误(每个错误中包含不同的项ID):
Error: [$parse:syntax] Syntax Error: Token 'cb0a2a73ede6e3a9d7a58_delete' is an unexpected token at column 4 of the expression [543cb0a2a73ede6e3a9d7a58_delete] starting at [cb0a2a73ede6e3a9d7a58_delete].
^该项目的输出item._id
例如是543cb0a2a73ede6e3a9d7a58。
答案 0 :(得分:1)
Angular期望在那里为ng-show返回true或false的表达式。所以只是渲染一个字符串真的没有帮助。您可以定义一个解析为true或false的控制器函数,也可以只编写内联表达式,如ng-show="item.id === 2"
。
但是在删除之前你似乎想要一个确认对话框,在这种情况下你应该编写一个自定义指令来拦截执行它之前的click操作(遗憾的是在Angular内置中没有ng-confirm这样的东西)。
以下是此类指令的示例:https://gist.github.com/asafge/7430497
答案 1 :(得分:1)
如果您只是想向用户切换消息,则可以简单地使您的跨度依赖于切换的范围变量,如下所示:
<a ng-click="delete(item_id); showDelete=!showDelete">item</a>
<span ng-show="showDelete">Are you sure you want to delete your review? </span>
JSFiddle here。
但是,您可能希望将其全部包含在像@frank blizzard所提到的指令中。
答案 2 :(得分:0)
试试这个:)
AH,如果item._id
以数字开头,则会出现错误
变量名称必须以字母开头 link
所以ng-show
绑定到范围中的变量并且它是动态创建的。 a_delete
,b_delete
可以正常工作,但如果它生成1_delete
,2_delete
,则会产生错误,因为这些错误以number
开头。
在您的情况下,item._id
以您在问题中提到的543cb0a2a73ede6e3a9d7a58
之类的数字开头。因此ng-show
以ng-show="543cb0a2a73ede6e3a9d7a58_delete"
之类的结尾结束。由于违反了命名约定,这应该会出错。