私は完全に狂っているような問題があります!私は親スコープ変数から値を取るスコープにバインドされた属性を取るディレクティブを使用します。 ... console.log(スコープ)を除いて、属性は通常、スコープオブジェクトのプロパティとして期待値で表示されますが、console.log(scope.myAttr)を実行すると定義されません!!角度指示スコープは、リンク機能に渡す/渡さない
このような人は誰ですか?
// In parent directive:
scope.datepickerOptions.enableTime = false;
// In directive:
angular.module('myModule')
\t .directive('datepicker', function() {
\t \t return {
\t \t \t require: 'ngModel',
\t \t \t restrict : 'A',
\t \t \t scope: {
\t \t \t \t format: '@',
\t \t \t \t enableTime: '=',
\t \t \t \t minDate: '@',
\t \t \t \t maxDate: '@',
\t \t \t \t mode: '@'
\t \t \t },
\t \t \t link : function(scope, element, attrs, ngModel) {
\t \t \t \t console.log("scope")
\t \t \t \t console.log(scope)
\t \t \t \t // displays all properties with expected values
//=> scope.enableTime: false
\t \t \t \t console.log("enableTime")
\t \t \t \t console.log(scope.enableTime)
// undefined (!!!)
...
// In parent template:
...
<input
type="text"
id="events_date"
name="events_date"
ng-model="events.selectedDate"
placeholder="Select Date Range"
ng-change="setQueryDate()"
format="d M Y"
mode="range"
enable-time="datepickerOptions.enableTime"
max-date="today"
datepicker>
...
私も試してみました: '@'
をし、私が行うとき、私は同じ狂気を取得:enableTimeで有効時= "{{datepickerOptions.enableTime}}" console.log(attrs)とconsole.log(attrs.enableTime)
$ scope引数を持つコントローラーを置いたときと同じこと: console.log($ scope)displayすべて正常ですが、console.log($ scope.enableTime)は未定義です
「attrs」を使ってみてください。リンク機能が実行されると、スコーププロパティはまだ設定されていません。それはその後に設定されます。そのため、直接参照しようとすると「未定義」になってしまいます。コンソールのスコープオブジェクトには、スコープの最終状態が表示されます。 – Hoyen
実際に 'scope'オブジェクトを使用する必要がある場合は、link関数の代わりにdirectiveのコントローラ関数を使用してください。 – Hoyen
しかし、attrs.enableTimeには「datepickerOptions.enableTime」という値はありませんか?プロジェクトの他のディレクティブがすべて正常に機能するのはなぜですか?それは**制限です: 'A' **これはこの動作ですか? –