在Angularjs中,我的HTML在从服务器返回数据之前会出现闪烁问题。
这里有一个视频展示了这个问题:http://youtu.be/husTG3dMFOM - 请注意 #| 和右侧的灰色区域。
我尝试了ngCloak,但没有成功(虽然ngCloak确实可以防止承诺的括号出现),并且想知道隐藏内容直到由Angular填充HTML的最佳方法。
我在我的控制器中使用了这段代码,让它可以正常工作:
var caseCtrl = function($scope, $http, $routeParams) {
$('#caseWrap').hide(); // hides when triggered using jQuery
var id = $routeParams.caseId;
$http({method: 'GET', url: '/v1/cases/' + id}).
success(function(data, status, headers, config) {
$scope.caseData = data;
$('#caseWrap').show(); // shows using jQuery after server returns data
}).
error(function(data, status, headers, config) {
console.log('getCase Error', arguments);
});
}
我听说过很多次不要从控制器操作DOM。我的问题是,如何使用指令来实现这一点?换句话说,如何在所有内容从服务器加载完成之前隐藏指令所附加的元素?