2015-04-24 11 views
4

在Angular模板中,如果模板中存在未定義的變量,它將會以靜默方式失敗。在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> 

變量沒有得到插值,因爲他們沒有在$範圍存在。錯誤輸入的ng-modal(而不是ng-model)屬性將無提示失敗。這是發展中不受歡迎的行爲。

有沒有辦法改變這種錯誤?對於Angular來說,我會很好的解決這個問題。

+1

答案解決了'數據'丟失的情況。然而,除了創建ngModal指令或運行一些基於字典的錯誤檢測器(使用jQuery)'$('[ng-modal]')each()之外,沒有辦法檢測到你編寫'ng-modal'。 ..)' – floribon

+0

我不認爲有反正來處理拼寫錯誤..如果你拼寫到達錯誤,你不會看到結果。這只是 – GANI

+0

真正的解決方案,現在只是使用Angular 2+:P – ccnokes

回答

2

您可以通過在模板中使用||來確保選擇了一個值。使用||時要分配一個變量,第一個真值變量將被返回。所以在你的例子中:

<div ng-controller="MyCtrl"> 
    <p ng-click="doSomething()">{{ data || "Data is not defined" }}</p> 
    <input type="text" ng-modal="input"> 
</div> 

這將從數據定義時的「數據未定義」變爲$ scopedata。如果你想要一個錯誤,使用相同的方法,而不是一個字符串,使用一個函數。

<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)); } }; 
相關問題