0

Laravel angular の新しいバージョンを使い始めたところです。ページを下にスクロールするときに rootScope 変数を変更するコードを追加しようとしています。これは私がこれまでに持っているものです。

$onInit(){
    this.$rootScope.showTestBanner = true;
    var $rootScope = this.$rootScope;

    angular.element(this.$window).bind("scroll", function() {
        if (this.pageYOffset >= 20) {
            this.$rootScope.showTestBanner = false;
        }
    });
}

問題は、this.$rootScope が angular.element 内で定義されていないことです。this.$rootScope を angular.element の外に割り当てようとしたので、バインド関数内で使用できますが、データバインディングは機能しているようです。どんな提案でも大歓迎です。答えが明らかな場合は、すみません、私はAngular 1.5とECMA6に非常に慣れていません。

4

1 に答える 1

0

=>新しい ES6 ラムダ構文を使用して、これのレキシカル値を設定するより良い方法があります。以下のようにラムダを使用するようにコードを変更すると、 の正しい値が得られますthis

$onInit = () => {
  this.$rootScope.showTestBanner = true;
  let $rootScope = this.$rootScope;

  angular.element(this.$window).bind("scroll", function() {
    if (this.pageYOffset >= 20) {
        this.$rootScope.showTestBanner = false;
    }
  });
}

の値は、クラスの他のメソッドではなく、this内で語彙的に正しく設定されます。constructorしたがって、使用するすべてのメソッドを変更して=>、これの正しい字句値を取得する必要があります

于 2016-05-27T12:31:42.120 に答える