JSでモデルを次のように定義しました。
$scope.requirement = {
id: function() {
if($scope.dada || $scope.lala) {
return $scope.dada
}
return $scope.haha
}
}
変数はナンセンスですが、定義されているふりをします(私の状況では、これは単なる例です)。
そして、Angularディレクティブを使用したHTMLには、次のような入力があります。
<input type="text" ng-model="requirement.id" placeholder="ID">
関数から返される値は、の値ではありませんrequirement.id
。上記のような関数を渡すことができますが、Angular.jsに関数を評価させ、戻り値を使用させるにはどうすればよいですか?
編集:
私はこれを試しましたが、うまくいきませんでした:
$scope.requirement = {
id: null
}
if($scope.dada || $scope.lala) {
$scope.requirement.id = $scope.haha;
}
実行するconsole.log(requirement)
と値が変更されますが、ビューの新しい値を表していません。ビューの入力はまだ表示されますnull
双方向バインディングを実行している場合id
は、1つの引数を持つゲッター/セッター関数として定義する必要があります。したがって、値が渡されると、その値はセッターとして機能し、モデルを更新します。それ以外の場合は、ロジックに基づいて現在の値を取得します。
$scope.requirement = {
id: function(newId) {
if (arguments.length) {
$scope.dada = newId;
}
return ($scope.dada || $scope.lala) ? $scope.dada : $scope.haha;
}
}
input要素を更新し、ng-model-options属性を追加する必要があります。
<input type="text" ng-model="requirement.id" ng-model-options="{ getterSetter: true }" />
一方向バインディングについて話しているだけの場合は、getter / setterまたはng-modelを使用する必要はありません。
<input type="text" value="{{requirement.id()}}" readonly />
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加