7

これに関する多くの質問を見てきましたが、それらはすべて$scope.$apply()$scope.$digest()を呼び出すか、入力で change() メソッドをトリガーすることで解決されるようです。しかし、私はそれらの方法のいずれかでそれを動作させることができないようです. このフィドルでは、ボックスに名前を入力し、入力時にモデル値を更新することができます。しかし、リンクをクリックすると、入力名を特定の値に設定するために、モデル名が更新されます。私は何をする必要がありますか?

私がこれをやろうとしている理由は、ユーザーがブラウザーの自動入力や LastPass などを使用してフォームに自動入力したときに、角度モデルを更新できるようにしたいからです。確かに、DOM からモデルを更新するためのいくつかの角度コマンドがありますか?

http://jsfiddle.net/PXCUq/

$(function () {
    $('#setFirstName').click(function () {
        $('input.firstname').val('Test Name');
        angular.element($('input.firstname')[0]).scope().$apply();
        // Model still not updated
    });
});
4

1 に答える 1

6

スコープを取得してから、ng-model プロパティを変更します。

$('#setFirstName').click(function() {
    var scope = angular.element($('input').get(0)).scope()
    scope.firstname = 'Test Name';
    scope.$apply();
});

より優れた jQuery セレクターを考え出すことができます。私はAngularの部分だけに焦点を当てていました。

フィドル

于 2013-02-06T22:40:27.393 に答える