所以我有一个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。没知道这很重要。