2016-12-22 2 views
2

私は通常、関数からtrue/falseを返し、その関数をプロパティに渡しますが、この場合は機能しません。例えばAngularJSなぜ関数からブールを返すのがプロパティと同じではないのですか?

:ISENABLEDにfalseを渡す

作品:

$scope.myDropDownConfig = { 
     allowMultiple: false, 
     onSelecting: $scope.onSelect, 
     isEnabled: false; 
    }; 

これは動作しません:

$scope.myDropDownConfig = { 
     allowMultiple: false, 
     onSelecting: $scope.onSelect, 
     isEnabled: function() { 
      return false; 
     } 
    }; 

式は時間に評価されていませんか?私はそれが直接boolを使用すると同じだと思った...エラーは、デバッガーは捕まえていない。何か案は?表現を評価するために角度をつけなければなりませんか?

+0

と第二を起動する必要がありますか?すぐに、または他の時に? – 4castle

+0

私は、isEnabledプロパティがREADであるとすぐに評価されると仮定しました。そうでない場合...私は、これが機能するためには別の関数から式の評価を開始する必要があります...私は理由がわかりません。 – nocarrier

答えて

5

第1のプロパティは単純プロパティであり、第2のプロパティは関数です。だから、あなたは関数が評価されたくない場合は、括弧()

  1. $scope.myDropDownConfig.isEnabled
  2. $scope.myDropDownConfig.isEnabled()
+2

このオブジェクトをAngularに渡しても、まだ動作しません。彼らは '$ scope.myDropDownConfig.isEnabled = $ scope.myDropDownConfig.isEnabled()'を実行する必要があります。 – 4castle

+0

OPは使用されている場所に掲載されていませんが、関数はJavaScript式が必要な場所であればどこでも有効です。 – Agalo

+0

私は従いません。関数は構文上有効ですが、APIが関数を期待しているとは限りません。単に関数を呼び出すだけでは、オブジェクトに格納されている値は変更されません。 – 4castle

関連する問題