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

标签 angularjs

在 Angular 模板中,如果模板中有 undefined variable ,它将静默失败。

下面的一些示例代码:

Controller :

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

最佳答案

您可以使用 || 确保选择了一个值。在模板中。使用 || 时要分配变量,将返回第一个真实变量。所以在你的例子中:

<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)); } };

关于angularjs - 在 Angular 模板中,如果变量未定义,有没有办法抛出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29858257/

相关文章:

ruby-on-rails - 如何将使用 Gulp 的 Rails 应用程序部署到 Heroku?

javascript - 如何在 Angular js 中使用 ng-bind-html 实现对 contenteditable 元素的双向绑定(bind)?

javascript - 如果在 uib-tabset 中使用,则值不与范围的变量绑定(bind)

javascript - 带有 system.js 的全局库

javascript - 如何在指令的情况下更改下拉列表的默认文本并对指令应用所需的验证

javascript - 在 JavaScript 中从工作日中排除周末日期

javascript - AngularJS 指令不显示模板

javascript - AngularJS .component() 中的输出函数 ('&' )不起作用

javascript - 在 ng-repeat 中循环遍历深层对象

javascript - 在 Openshift 上使用 Angular 和 PHP 时出现跨域脚本错误