3

ngModelController の例の Angular ドキュメントでは、javascript ファイルに次のように記載されています。

angular.module('customControl', []).
    directive('contenteditable', function() {
        return {
            restrict: 'A', // only activate on element attribute
            require: '?ngModel', // get a hold of NgModelController
            ...

「ngModel」が NgModelController を指すのはなぜですか? 「require: '?ngModelController」ではないのはなぜですか。命名の観点からは、その方が適切に思えます。

また、ディレクティブのスコープ内でモデルの変更を監視するために $watch() 関数を使用するのとは対照的に、$setViewValue() 関数を使用してモデルを更新することの違いは何ですか?

ありがとう!

4

2 に答える 2

2

「ngModel」が NgModelController を指すのはなぜですか? 「require: '?ngModelController」ではないのはなぜですか。命名の観点からは、その方が適切に思えます。

プロパティは、コントローラーディレクティブrequireを要求するために使用されるためです。たとえば、ディレクティブには、 およびその他のいくつかの機能を持つプロパティがあります。カスタム ディレクティブを作成している場合は、そのコントローラーを作成し、他のディレクティブはorと言ってアクセスできます。ngModelcontroller$setViewValuerequire: '?yourDirective'require: '^yourDirective'require: 'yourDirective'

Angular のドキュメントから:

controller- コントローラー コンストラクター関数。コントローラーはリンク前フェーズの前にインスタンス化され、他のディレクティブが名前で要求した場合に共有されます (require 属性を参照)。これにより、ディレクティブが相互に通信し、相互の動作を強化することができます。

require- 現在のディレクティブ リンク関数に別のコントローラーを渡す必要があります。require は、渡すディレクティブ コントローラーの名前を取ります。そのようなコントローラーが見つからない場合、エラーが発生します。

詳しくはこちらをご覧ください

于 2013-06-12T01:04:23.510 に答える