2015-04-15 42 views
4

我想要綁定圖像的滾動,以便根據滾動位置,我可以更改$ scope值。但是,我正在做的是打破價值的約束。這裏的的jsfiddle:

http://jsfiddle.net/h2popz9t/

$scope.testFun = function(a) { 
     if (a.target.scrollLeft < 100) { 
      $scope.something.yes = true; 
     } else if (a.target.scrollLeft > 100) { 
      $scope.something.yes = false; 
     } 
    }; 

    b.bind('scroll', $scope.testFun); 

當「something.yes」改變(因爲你已經滾過100像素),它應該引發與文本「東西DIV的「NG-秀」。 「不是。雖然,我知道他們最初是有聯繫的,因爲something.yes在啓動時有適當的價值。

我不知道我是如何搞砸了的「$ scope.something」

+0

爲什麼你將'this'設置爲一個字符串?或函數的第一個參數?或者,是不是一個功能? – dandavis

回答

2

即使您正在調用$scope函數,它在技術上也不在摘要循環中,因爲它位於事件偵聽器上。這種類型的東西通常只在指令中完成。

爲了得到它的工作,你只需要強制摘要:

function testFun(a) { 
    $scope.$apply(function() { 
     console.log("a", $scope.something); 
     if (a.target.scrollLeft < 100) { 
      $scope.something.yes = true; 
     } else if (a.target.scrollLeft > 100) { 
      $scope.something.yes = false; 
     } 
    }); 
} 

b.bind('scroll', testFun); 

http://jsfiddle.net/h2popz9t/5/

0

綁定如果您使用綁定或作爲快捷方式添加事件偵聽器(或但是添加自己的監聽器),那麼你需要在事件處理程序中自己觸發$作用於$ scope。調用$ apply會導致$ digest運行,這會反過來檢查所有的$ watcher設置以查看是否需要更新任何內容。

0

你需要在$ scope.testFun使用$scope.$apply(),因爲當它被綁定,然後它不是一個角結合

$scope.testFun = function(a) { 
       console.log("a", $scope.something); 
      if (a.target.scrollLeft < 100) { 
       $scope.something.yes = true; 
      } else if (a.target.scrollLeft > 100) { 
       $scope.something.yes = false; 
      } 
      $scope.$apply(); 
     }; 

工作fiddle

相關問題