2014-03-30 48 views
0

這可能是一個JavaScript問題,但代碼來自AngularJS教程。問題是,我怎麼能得到這個代碼工作:AngularJS教程'複選標記'過濾器,更清晰的返回值

我的變化,我想回到更加明確了一點,但這種失敗:從教程

angular.module('phonecatFilters', []).filter('checkmark', function() { 
    var isChecked = function(input) { 
    return input ? '\u2713' : '\u2718'; 
    }; 

    return isChecked(input); 
}); 

ORIGINAL:

angular.module('phonecatFilters', []).filter('checkmark', function() { 
    return function(input) { 
    return input ? '\u2713' : '\u2718'; 
    }; 
}); 

這裏的教程頁面: http://docs.angularjs.org/tutorial/step_09

回答

3

注意,原來的代碼返回功能 (在return function(input)聲明)。這意味着你也應該返回一個函數:

return isChecked; // instead of `return isChecked(input);` 

...而不是調用它的結果。順便說一句,有沒有必要使用一個變量這一點 - 這是不夠的(用於評論和調試的目的),其表達式中命名函數:

angular.module('phonecatFilters', []).filter('checkmark', function() { 
    return function getCheckmark(input) { 
    return input ? '\u2713' : '\u2718'; 
    }; 
}); 

我已經改變了函數的名字,因爲它不是返回一個布爾值(你可能期望從方法isXXX) - 但是一個字符,基於它的輸入是否是falsy值。

+0

謝謝。我也試過「return isChecked()」,但是現在我看到了這個問題,我正在返回函數的返回值,而不是實際的函數本身。 –