Angular 出现错误时显示绑定。这可以避免吗?
Angular shows bindings when errors occur. Can this be avoided?
似乎Angular的默认行为是在抛出异常且无法继续时显示html中存在的绑定。在这种情况下有什么办法可以隐藏它们吗?
我认为 ng-cloak 可能适用于此,但我试图避免将 ng-cloak 添加到我的应用程序中的每个元素。
想法?
然后将 ng-cloak
添加到包含您要隐藏的所有内容的大 div
中。你甚至可以隐藏整个 <body>
.
另一个常见的解决方案是在 $scope
上添加一个 isReady
变量。默认情况下,isReady
将为 false
,您可以使用不同的值显示 {{...}}
。加载所有内容(例如您的 ajax 数据)后,将 isReady
设置为 true
。
例如,(假设您将 $scope 注入控制器而不是将控制器用作 vm)
在您的 html 标记中,
<h1>{{isReady?title:'loading'}}</h1>
在控制器中
angular.module('myApp').controller('$scope', function($scope){
activate();
function activate(){
// your code to get ajax data...
$scope.title='title to display';
$scope.isReady=true; // place at the end when everything before runs without error.
}
});
您可以改用 ngBind;
<div ng-bind="someExpression"></div>
似乎Angular的默认行为是在抛出异常且无法继续时显示html中存在的绑定。在这种情况下有什么办法可以隐藏它们吗?
我认为 ng-cloak 可能适用于此,但我试图避免将 ng-cloak 添加到我的应用程序中的每个元素。
想法?
然后将 ng-cloak
添加到包含您要隐藏的所有内容的大 div
中。你甚至可以隐藏整个 <body>
.
另一个常见的解决方案是在 $scope
上添加一个 isReady
变量。默认情况下,isReady
将为 false
,您可以使用不同的值显示 {{...}}
。加载所有内容(例如您的 ajax 数据)后,将 isReady
设置为 true
。
例如,(假设您将 $scope 注入控制器而不是将控制器用作 vm)
在您的 html 标记中,
<h1>{{isReady?title:'loading'}}</h1>
在控制器中
angular.module('myApp').controller('$scope', function($scope){
activate();
function activate(){
// your code to get ajax data...
$scope.title='title to display';
$scope.isReady=true; // place at the end when everything before runs without error.
}
});
您可以改用 ngBind;
<div ng-bind="someExpression"></div>