Angularjs 如何在自定义指令中访问控制器数据集

Angularjs 如何在自定义指令中访问控制器数据集,angularjs,Angularjs,我在玩自定义指令的angular js作用域,并尝试在自定义指令中使用不同属性名称的控制器数据集,但没有成功。请查看我的代码,并建议我访问数据和在自定义指令的ng repeat中设置的正确方法 我需要在自定义指令或指令模板内设置ng repeat吗?我是说 像这样 <movie-list ng-repeat="entry in movieData" > </movie-list> index.html 但不工作更新属性名称: 致: 注意:指令或属性名称应为小写。更

我在玩自定义指令的angular js作用域,并尝试在自定义指令中使用不同属性名称的控制器数据集,但没有成功。请查看我的代码,并建议我访问数据和在自定义指令的
ng repeat
中设置的正确方法

我需要在自定义指令或指令模板内设置ng repeat吗?我是说

像这样

<movie-list ng-repeat="entry in movieData" > </movie-list>
index.html 但不工作

更新属性名称:

致:


注意:指令或属性名称应为小写。

更新属性名称:

致:


注意:指令或属性名称应为小写。

如果要跳过指令中的作用域(从指令中删除作用域:{movieArray:'=movieArray'}),可以通过Index.html中的以下代码来完成:

<div ng-controller="homeController" >
<div class="col-lg-6">
    < div movie-list></div>
</div>
如果要跳过指令中的作用域(从指令中删除作用域:{movieArray:'=movieArray'}),可以通过Index.html中的以下代码来实现:

<div ng-controller="homeController" >
<div class="col-lg-6">
    < div movie-list></div>
</div>

你需要做
movie array
而不是
movieArray
)(哦,驼蛇在棱角上的危险,已经损失了大量的时间)
$scope:{movie array:'movieData'}
不起作用你需要做
movie array
而不是
movieArray
)(哦,驼峰蛇在角度上的危险,已经损失了大量的时间)。那么
$scope
里面会是什么呢
$scope:{movie array:'movieData'}
不起作用,需要在
$scope
属性中写入什么<代码>范围:{movieArray:'=movieData'},
不返回任何内容该答案是正确的,并且基于问题的事实,其中
范围:{movieArray:'=movieArray'}
。(顺便说一句,这是多余的,因为属性和作用域属性名称相同,写
scope:{movieArray:'='}
就足够了。)
scope:{movieArray:'=movieData'}
来自哪里?当然,它不起作用,它分配
电影数据
属性的值(至少根据问题中陈述的事实,该属性不存在)到
movieArray
scope属性。我想将控制器的
$scope.movieData
更改为指令的
$movieArray
这解决了我的问题,但为什么我要在
ng repeat
中编写movieArray而不是movieArray?这是角度语法:)以及需要在
$scope
属性中编写什么<代码>范围:{movieArray:'=movieData'},
不返回任何内容该答案是正确的,并且基于问题的事实,其中
范围:{movieArray:'=movieArray'}
。(顺便说一句,这是多余的,因为属性和作用域属性名称相同,写
scope:{movieArray:'='}
就足够了。)
scope:{movieArray:'=movieData'}
来自哪里?当然,它不起作用,它分配
电影数据
属性的值(至少根据问题中陈述的事实,该属性不存在)到
movieArray
scope属性。我想将控制器的
$scope.movieData
更改为指令的
$movieArray
这解决了我的问题,但为什么我要在
ng repeat
中编写movieArray而不是movieArray?这是角度语法:)
angular
    .module('app')
    .controller('homeController', function($scope) {
        $scope.movieData = [{
            name : 'PK',
            star : 'Aamir Khan',
            releaseYear : '2015'
        },
        {
            name : 'PiKu',
            star : 'Irrfan Khan',
            releaseYear : '2015'
        }
        ];
});

// custom directive

angular
.module('app')
.directive('movieList', function(){
    // Runs during compile
    return {
        scope: { movieArray : '=movieArray' }, 
        controller: function($scope, $element, $attrs, $transclude) {
        },
        require: '?ngModel', 
        restrict: 'E',
        templateUrl: 'movie.html',
        replace: true,
        link: function($scope, element, attr, controller) {
            // console.log($scope.$parent);
        }
    };
});
<div ng-controller="homeController" >
<div class="col-lg-6">
    <movie-list movieArray="movieData"></movie-list>
</div>
<div>
<ul class="list-group" >
    <li ng-repeat="entry in movieArray" class="list-group-item" >
        <h3 class="list-group-item-heading">{{ entry.name }}</h3>
        <p class="list-group-item-text">
            {{ entry.star }} - Release in {{ entry.releaseYear }}
        </p>
    </li>
</ul>
</div>
<movie-list movieArray="movieArray"></movie-list>
<movie-list movie-array="movieData"></movie-list>
<div ng-controller="homeController" >
<div class="col-lg-6">
    < div movie-list></div>
</div>
 .controller('homeController', function($scope) {
        $scope.movieArray= [{
            name : 'PK',
            star : 'Aamir Khan',
            releaseYear : '2015'
        },
        {
            name : 'PiKu',
            star : 'Irrfan Khan',
            releaseYear : '2015'
        }
        ];