Angular ng-if即使在true时也会删除元素

时间:2015-07-02 12:51:38

标签: javascript angularjs

所以我有一个dataservice函数,通过api调用获取登录帐户的类型(admin和customer是其中两个)。

如果客户已登录,则不应在我拥有数据的表格中显示五列。 所以我使用了ng-if,它似乎不起作用。

this.hideSensitiveData = true;
function updateHideSensitiveDataFlag() {
        return dataservice
           .getUserType()
           .then(function (data) {
               var userType = data;
               this.hideSensitiveData = userType === "Customer";
           });
    }

其中一个coulmns(在thead和tbody中):

<th sort by="'pumpPressure'" order="order" reverse="reverse" ng-if="this.hideSensitiveData">{{ 'PumpPressure' | translate}}</th>

<td ng-if="this.hideSensitiveData">{{sequence.pumpPressure.toFixed(1)}}</td>

&#34;数据&#34;这将是帐户类型。因此,如果我理解了ng - 如果正确的话,如果表达式的计算结果为false,则将在DOM中删除该元素。因此,如果我以客户身份登录,则此值将在this.hideSensitiveData上为true。它仍然删除了列,这显然让我感到困惑,因为如果它是假的,它应该只删除它。

提前致谢!

编辑:如果有帮助,这里是dataservice功能:

function getUserType() {
        return $http.get('/api/v2/user/getUserType/')
               .then(function (xhr) {
                   logger.info('userType loaded: ', xhr);
                   var userType = xhr.data;
                   return userType;
               })
               .catch(function (message) {
                   logger.error('XHR Failed for userType', message);
                   return $q.reject(message);
               });
    }

EDIT2:响应重复标记。我实际上有var self = this; 在控制器的顶部...这就是为什么每个人都这么困惑? 所以我使用self.hideSensitiveData而不是this.hideSensitiveData。没知道这很重要。

0 个答案:

没有答案