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