Angularjs 角度指令内的求值表达式

Angularjs 角度指令内的求值表达式,angularjs,Angularjs,我希望我的表根据值是否为null有条件地呈现其行。行具有不同的自定义条目和标签,这就是为什么我不能只使用ng repeat。代码如下: <table> <thead> </thead> <tbody> <tr ng-show = "{{data.entry_1}} !== null"> <td>Custom Label 1</td>

我希望我的表根据值是否为null有条件地呈现其行。行具有不同的自定义条目和标签,这就是为什么我不能只使用ng repeat。代码如下:

<table>
    <thead>
    </thead>
    <tbody>
        <tr ng-show = "{{data.entry_1}} !== null">
            <td>Custom Label 1</td>
            <td>{{data.entry_1}}</td>
        </tr>
        <tr ng-show = "{{data.entry_2}} !== null">
            <td>Custom Label 2</td>
            <td>{{data.entry_2}}</td>
        </tr>
        .
        .
        .
        <tr ng-show = "{{data.entry_n}} !== null">
            <td>Custom Label n</td>
            <td>{{data.entry_n}}</td>
        </tr>
    </tbody>
</table>
然而,这种方式似乎是不对的。要么javascript编译器在ng show中的{{}处抱怨,要么在“!=”处抱怨“空”或者两者都有。如何计算ng指令内{{}}中的角度表达式

我知道我也可以在js文件中对此进行求值,但是因为我不想添加更多的范围变量来使代码更干净,所以我选择在ng show指令中求值它是否为null。有人能告诉我怎么做吗


谢谢。

在指令内的作用域上下文中使用$compile service

参见$compile


编辑:我同意马丁的回答。

你很接近。大括号仅用于回显/打印/渲染变量的值。在表达式中,永远不要使用大括号

自定义标签1 {{data.entry_1}} 自定义标签2 {{data.entry_2}} . . . 自定义标签 {{data.entry} 自定义设备 {{data.device}
您以错误的方式使用表达式语言,null条件应该在表达式内部,即{{data.entry_2!==null}}顺便说一句,如果自定义实体具有示例中给出的索引,您仍然可以在tr中使用ng repeat并有条件地呈现行。例如{{data['entry\'+$index+1]!==null}可以使代码简洁。当然,如果属性具有随机名称,这种方法将不起作用。e、 g ng show='calculate0'返回true或false。考虑可重用代码,这样就不需要重复!==每次都为null,您可以轻松地将null更改为false,例如,如果您的场景changes@cubbuk是威德。当我使用ng show=false时,chrome开发工具会显示另一个属性display:none。如果它仍然计算为true并显示:none消失,即使在js文件中没有为entry_i赋值,该变量实际上也不应该存在。@Stefanos在ng show中是正确的,您甚至不需要{{}。考虑到这个问题,我认为这有点过分了。在动态加载DOM的情况下,创建一个指令来计算表达式可能会适得其反。ngShow指令就足够了。另一个问题是,如果变量“device”从来都不是数据的值,因为javascript文件没有为数据分配或初始化此类变量,即数据中不存在设备,那么比较data.device是否就足够了!==空以获得真实性或虚假性?我已经更新了我的示例,包括这个问题。我建议阅读有关角度表达式的文档。您不需要评估data.device!==无效的数据设备已足够。NG表达式比JS更宽容。如果属性未定义,或父对象未定义,则表达式的计算结果将为false。