2016-04-26 90 views
2

Im試圖對我的div使用scrolly指令。當用戶向下滾動並結束div時,我想調用一個函數。它給我未定義的範圍。$ apply函數? 請任何一個幫助。 Thankx提前 這裏是我的html代碼

<div id="container" style=" 
    position:absolute; 
    top: 60px; 
    width: 100%; 
    left:0px;height:91%;overflow-y:scroll;" scrolly="showMore()" > 

這裏是應用程序和控制器

var app = angular.module('smac',[]); 
app.controller('asd',function ($http,$scope) { 
    $scope.showMore = function(){ 

    alert('div finished'); 
    } 
    }); 

和指令是

app.directive('scrolly', function() { 
return { 
    restrict: 'A', 
    link: function (scope, element, attrs) { 
     var raw = element[0]; 
     console.log('loading directive'); 

     element.bind('scroll', function() { 
      console.log('in scroll'); 

      console.log(raw.scrollTop + raw.offsetHeight >= raw.scrollHeight) 
      if (raw.scrollTop + raw.offsetHeight >= raw.scrollHeight) { 
       scope.$apply(attrs.scrolly) 

       console.log(scope.$apply(attrs.scrolly)); // this is undefined 
      } 
      }); 
    } 
}; 
}); 
+1

該控制檯日誌正在打印作用域的返回值$ apply,我敢打賭是未定義的。如果你想檢查的範圍,$ apply本身是未定義的,你需要使用。 'console.log(scope。$ apply);' –

+0

爲什麼它返回undefined? @ZacBraddy – Asad

+0

你真正的問題是什麼?你想要達到什麼目標,而且哪些不起作用? – kabaehr

回答

0

應該$scope.$apply

你錯過了$範圍前

+0

這不是問題@Vinod – Asad

+0

參數也是一個範圍。 – Asad

+0

按照控制器的約定,他的函數的參數被稱爲'scope'而不是'$ scope'。我認爲使用'scope'作爲鏈接函數的一個參數來源於角度文檔中給出的很多鏈接函數的例子。 –

1

如果我沒有弄錯,你的範圍。$ apply函數調用返回未定義的原因是因爲你的showMore函數沒有返回值。如果你看看源代碼,$的角度應用功能,你會看到一些實現,但它們都或多或少只需調用$ eval函數:

從角的源

function $apply(expr) { 
    try { 
     return $eval(expr); 
    } catch (e) { 
     $exceptionHandler(e); 
    } finally { 
      $root.$digest(); 
     } 
} 

Here is a link to another SO question about what $eval does

所以我會承擔什麼角度試圖做評估scrolly的值作爲ATTR正在執行的功能,因爲你的函數沒有返回任何你越來越不確定的角度表達。

這當然是一個解釋爲什麼你得到undefined作爲範圍的返回值$ apply但不是答案你爲什麼需要知道返回值的問題?

+0

看看這個小提琴@Zac我工具從這裏的scroly代碼[http://jsfiddle.net/ADukg/4831/] – Asad

+0

鏈接已打破@Asad –

+0

這裏是問題鏈接檢查出小提琴從答案@ZAC [http:/ /stackoverflow.com/questions/21989923/scroll-event-is-not-fired-inside-directive-angular-js] – Asad

相關問題