AngularJS:如果未定义值,如何不呈现属性

时间:2015-01-06 07:07:24

标签: javascript angularjs angularjs-interpolate

我在指令中使用了一个模板,如下所示:

<tr>
    <th ng-repeat="col in tableSpec" st-sort="{{col.sortField}}"></th>
</tr>

当col.sortField不存在时,不应该渲染属性st-sort(根本没有属性)。

我已经读过关于“无所有”的消息。 $ interpolate中的选项可以执行我想要的操作,但是如果可以在使用{{}}符号时指定此选项,则不会这样做。

我也读过有关ngAttr的内容,我尝试使用这种表示法ng-attr-st_sort =&#34; {{col.sortField}}&#34;但是没有成功了。

任何healp都会非常感激。

让马克

1 个答案:

答案 0 :(得分:0)

据我了解,您的指令 stSort 有一个模板。您可以将 ngHide 指令添加到模板根元素,如果col.sortField存在,则可以添加$ observer条件吗?

.directive('stSort', [function () {
    return {
        restrict: 'EA',
        template: '<div ng-hide="$notRender"></div>',
        link: function(scope, element, attrs) {
            attrs.$observe('stSort', function(newVal, OldVal){
                 if(!newVal)
                     scope.$notRender = true
                 else
                    scope.$notRender = false;

                 //do your staff

            })
        }
    };
}])