AngularJS:属性在何时滚动'来自?

时间:2014-09-12 04:52:26

标签: angularjs

这是我在阅读此jsfiddle中的示例代码时遇到的问题http://jsfiddle.net/vojtajina/U7Bz9/

HTML

<div id="fixed" when-scrolled="loadMore()">
  <ul>
    <li ng-repeat="i in items">{{i.id}}</li>
  </ul>  
</div>

AngularJS控制器

function Main($scope) {
    $scope.items = [];

    var counter = 0;
    $scope.loadMore = function() {
        for (var i = 0; i < 5; i++) {
            $scope.items.push({id: counter});
            counter += 10;
        }
    };

    $scope.loadMore();
}

angular.module('scroll', []).directive('whenScrolled', function() {
    return function(scope, elm, attr) {
        var raw = elm[0];

        elm.bind('scroll', function() {
            if (raw.scrollTop + raw.offsetHeight >= raw.scrollHeight) {
                scope.$apply(attr.whenScrolled);
            }
        });
    };

});

我认为when-scrolled是从指令名whenScrolled以某种方式推断出来的。但我无法从AngularJS文档或谷歌搜索中找到明确的答案。

2 个答案:

答案 0 :(得分:1)

when-scrolledwhenScrolled指令(您可以在此处查看命名约定)。

  

Angular规范化元素的标记和属性名称,以确定哪些元素与哪些指令匹配。我们通常通过其区分大小写的camelCase规范化名称(例如ngModel)来引用指令。但是,由于HTML不区分大小写,我们通过小写形式引用DOM中的指令,通常使用DOM元素上的划线分隔属性(例如ng-model)。

阅读here

答案 1 :(得分:1)

案例(驼峰案例)意味着在角度指令中使用破折号,因此当需要在html中滚动时使用滚动时。