在Angular模板中,如果模板中存在未定义的变量,则它将以静默方式失败.
下面的一些示例代码:
控制器:
angular.module('app').controller('MyCtrl', function($scope) {
//nothing here
});
并且观点:
<div ng-controller="MyCtrl">
<p ng-click="doSomething()">{{ data }}</p>
<input type="text" ng-modal="input">
</div>
所有变量都不进行插值,因为它们在$scope上不存在.错误的ng-modal(非ng-model)属性将以静默方式失败.这是开发中的不良行为.
有没有办法改变它,以便抛出错误?我可以为Angular提供一个针对Angular的猴子补丁解决方案.
最佳答案 您可以使用||确保选择了一个值在模板中.使用时||要分配一个变量,将返回第一个truthy变量.所以在你的例子中:
<div ng-controller="MyCtrl">
<p ng-click="doSomething()">{{ data || "Data is not defined" }}</p>
<input type="text" ng-modal="input">
</div>
每当定义数据时,这将使消息从“未定义数据”更改为$scope.data.如果您想要一个错误,请使用相同的方法,而不是字符串,使用一个函数.
<div ng-controller="MyCtrl">
<p ng-click="doSomething()">{{ data || handleEmptyData(data) || "Data is not defined and handleEmptyData() also returned undefined" }}</p>
<input type="text" ng-modal="input">
</div>
$scope.handleEmptyData = function(data){
if(!data){ alert("Error, data was " + JSON.stringify(data)); } };