在 Angular 中编写指令的正确方法

Corrent means of coding a directive in Angular

我这里有一些代码

<div ng-repeat="student in students" class="student">
        <div class="col-md-2">
            <div class="row placeholder">
                <img data-src="holder.js/200x200/auto/sky" class="img-responsive profile" alt="200x200" src="#" data-holder-rendered="true">
            </div>
        </div>
        <div class="col-md-10" style="padding: 17px 40px;">
            <div class="row"><h1 class="name"><a href="/database/profile.php?id=2015552117"><span>{{ student.FirstName }}</span> {{ student.LastName }} , {{ student.MiddleName }}</a></h1></div>
            <div class="row">
                <h3 class="meta col-md-4 col-xs-6">Date of Birth <span class="label label-default">{{ student.DateofBirth | date }}</span></h3>
                <h3 class="meta col-md-4 col-xs-6">State <span class="label label-default">{{ student.State }}</span></h3>
                <h3 class="meta col-md-4 col-xs-6">L.Govt <span class="label label-default">{{ student.lga }}</span></h3>
                <h3 class="meta col-md-4 col-xs-6">Year Enrolled <span class="label label-default">{{ student.YearEnrolled }}</span></h3>
                <h3 class="meta col-md-4 col-xs-6">Class <span class="label label-default">{{ student.EducationalLevel }}</span></h3>
                <h3 class="meta col-md-4 col-xs-6">Status <span class="label label-danger">{{ student.Status }}</span></h3>
            </div>
        </div>
      </div>

我不想写出所有代码,而是想用

这样的指令替换它
<students></students>

这是我的那个特定模块的控制器

angular.module('studentList',[]);
/*
app.service('studentListService',['$http',function($http){
    return $http.get('http://localhost/database2/php/students.php')
        .success(function(data){
            return data;
        })
        .error(function(err){
            return err;
        });
}])
*/
app.controller('studentsController', ['$scope',function($scope){
    $scope.title = 'Student List';
    $scope.students = [
        {
            "id":"2015552117",
            "FirstName":"Alexia",
            "MiddleName":"Gino",
            "LastName":"Bella",
            "Gender":"Male",
            "DateofBirth":"2015-04-30",
            "State":"Abuja",
            "YearEnrolled":"0000",
            "EducationalLevel":"JS 2",
            "lga":"Tema",
            "Status":"Oweing"
        },
        {
            "id":"2015551756",
            "FirstName":"Anthiny",
            "MiddleName":"akp",
            "LastName":"tony",
            "Gender":"male",
            "DateofBirth":"2015-04-28",
            "State":"Ekiti",
            "YearEnrolled":"0000",
            "EducationalLevel":"SS 3",
            "lga":"itu",
            "Status":"Oweing"
        },
        {
            "id":"2015551627",
            "FirstName":"Anthony",
            "MiddleName":"Atang",
            "LastName":"Akpan",
            "Gender":"male",
            "DateofBirth":"2015-01-10",
            "State":"Akwa Ibom",
            "YearEnrolled":"0000",
            "EducationalLevel":"SS 2",
            "lga":"jega",
            "Status":"Graduated"
        }
    ];
}]);

app.directive('students', function(){
    console.log("Returning Student Array");
    return {
        restrict: 'E',
        scope: {
            info: '='
        },
        templateUrl:'/student.html'
    };
});

我对 Angular 还是很陌生,所以希望能提供一些帮助 我上次没有以正确的方式提出问题,所以我必须追溯

我为您的代码创建了一个基本的 plunker,并创建了一个变体。

首先,在不使用指令范围的情况下正确工作的副本:

http://plnkr.co/edit/NlkEATHYm9DJwpscHfLu?p=preview

<body ng-app="studentList">
  <div ng-controller="studentsController">
    <Students></Students>
    </div>
</body>

app.directive('students', function(){
    console.log("Returning Student Array");
    return {
        restrict: 'E',

        templateUrl:'student.html'
    };
});

其次,一个使用范围的例子。使用作用域的主要好处是您可以在同一页面上拥有指令的多个副本,并且每个副本都可以拥有自己的数据集。

http://plnkr.co/edit/y3fOotXybQeq5PY4JVlD?p=preview

<body ng-app="studentList">
  <div ng-controller="studentsController">
    <Students students=students></Students>
  </div>
</body>

app.directive('students', function(){
    console.log("Returning Student Array");
    return {
        restrict: 'E',
        scope: {
          students: '='
        },
        templateUrl:'student.html'
    };
});