2016-07-14 28 views
0

我HAML文件:AngularJS:在三元運算符條件檢查函數調用

%pipes-autocomplete{:model =>"filter.value",:option => "validate_option(filter)" ? "dependant(filter)" : "filter.option"} 

我的咖啡腳本:

$scope.validate_option =(filter)-> 
    console.log "called validate_option" 
    if filter.hasOwnProperty('option') && filter.option.indexOf('dependant') > -1 
     return true 
    else 
     return false 
    $scope.dependant =(cal)-> 
    return "choosed" 

在三元運算符,我試圖調用中定義的validate_option功能我角度控制器。但功能沒有被調用。有人可以幫我解決這個問題。

+0

正如你現在所說的,三元運算符會認爲字符串是真的(只是因爲它不是空的)。使用'「validate_option(filter)?dependent(filter):filter.option」'(全部在一個字符串中)嘗試,以便將三元運算符的執行推遲到字符串求值時。 – trincot

+0

@trincot非常感謝。它工作正常。我是一個新手角。我的疑惑已經與您的解釋清除。 –

回答

2

正如你在問題中提到的那樣,三元運算符會認爲字符串"validate_option(filter)"true(僅僅因爲它不是空的)。

而是把三元運算符裏面的字符串:

"validate_option(filter) ? dependant(filter) : filter.option" 

你推遲三元運算符時,字符串實際上是評估以執行的方式。