40

2 つの入力ラジオ ボタンがある次のビューがあります。

<label>
    <input type="radio" name="test" ng-model="fooBar" 
        value="true" ng-change="logConsole()">
    True
</label>

<label>
    <input type="radio" name="test" ng-model="fooBar" 
        value="false" ng-change="logConsole()">
    False
</label>

そして私のコントローラーは次のようになります:

//Initialization
$scope.fooBar = false;

$scope.logConsole = function () {
    console.log("Value is : " + $scope.fooBar);
    console.log("Type is : " + typeof $scope.fooBar); //Always displays 'string'
};

私の問題は、ユーザーがラジオボタンのいずれかを選択すると、fooBarモデルのタイプが常に文字列になることです。つまり、値は文字列 'true' または文字列 'false' のいずれかです - タイプをブール値にしたいtrue 値またはブール値の false 値。モデルに (ビュー内から) ブール値を格納するにはどうすればよいですか?

編集:これを試してみましたが、まだ機能しません。属性にはvalue、次のようなブール値の true または false を返す関数を渡しました。

<input type="text" value="{{getBoolean('true')}}....>

$scope.getBoolean = function (value) { if (value === 'true') return true; それ以外の場合は false を返します。};

ラジオボタンが選択されている場合でも、文字列になります...

4

1 に答える 1

64

ドキュメントのコメントの 1 つには次のように書かれています。

ng-value は文書化されていませんが、特にブール値にバインドする場合に便利なディレクティブです。

<input ng-model="foo" type="radio" value="true"> 

うまくいかないかもしれませんが

<input ng-model="foo" ng-value="true" type="radio"> 

します。

于 2013-07-17T14:12:53.890 に答える