我正在使用指令來檢查用戶滾動窗口的數量,但我無法設法將範圍與控制器綁定。在AngularJS中綁定指令範圍與控制器
這裏的指令和控制器代碼:
'use strict';
angular.module('myApp.landing', ['ngRoute'])
.config(['$routeProvider', function($routeProvider) {
}])
.controller('landingCtrl', ["$scope", function($scope) {
$scope.scrolled = false;
$scope.$on('$routeChangeSuccess', function() {
});
}]).
directive("scroll", ["$window", function($window){
return {
scope: false,
link: function($scope, element, attrs){
angular.element($window).bind("scroll", function(){
if (this.pageYOffset >= 150) {
$scope.scrolled = true;
console.log($scope.scrolled + 'Scrolled 100px');
} else {
$scope.scrolled = false;
console.log($scope.scrolled + 'Not scrolled enough');
}
});
}
};
}]);
這是視圖代碼:
<div ng-controller="landingCtrl" scroll>
<div class="row">
<div class="col-sm-12 col-md-9 landing-square">{{ scrolled }}</div>
<div class="col-sm-12 col-md-3 landing-square"></div>
....
</div>
在滾動沒有定義視圖。如果我在控制器中定義它,我可以看到它,但該指令無法更改其值。基本上我想在視圖中根據指令改變值的變量「滾動」。
我錯過了什麼?
嘗試添加'$ scope。$ apply()'作爲滾動事件處理程序的最後一條語句,以便Angular獲知有關更改的信息。 (更好的是,將整個處理程序的內容包裝在'$ apply()'中。) –
...所有這些都假定console.logs是打印的,即事件處理程序實際上正在運行 –