在Angular模板中,如果变量未定义,有没有办法抛出错误?

时间:2015-04-24 22:00:59

标签: angularjs

在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提供猴子补丁解决方案。

1 个答案:

答案 0 :(得分:2)

您可以使用模板中的||确保选择了某个值。使用时||要分配一个变量,将返回第一个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)); } };