在没有$scope的指令中引用作用域变量
Angular - Reference scope variable in directive without $scope?
我试图在一个数组中显示第一个图像,这是馈送到我的指令,但是,我不明白为什么这不起作用。你能解释一下吗?
Script.js文件:
angular.module('app',[])
.controller('MyController', function() {
var self = this;
self.imageList=[
'https://upload.wikimedia.org/wikipedia/commons/3/3d/Polar_Bear_AdF.jpg',
'http://www.polarbearsinternational.org/sites/default/files/styles/media_full/public/00473-10104_0.jpg?itok=uv9Mr5rz',
'http://www.polarbearsinternational.org/sites/default/files/styles/inside_full/public/sca-000005.jpg?itok=7HybQm2o'
];
})
.directive('myImageGallery', function(){
return {
restrict: 'E',
scope:{
images: '='
},
controller: function() {
},
controllerAs: 'vm',
template: '<ul><img images="vm.images" ng-src={{ vm.images[0] }}</li></ul>'
}
})
HTML: <body ng-app="app">
<div ng-controller="MyController as myCtrl">
<my-image-gallery images="myCtrl.imageList"></my-image-gallery>
</div>
</body>
你只需要修改你的模板为:
template: '<ul><li><img ng-src="{{images[0]}}"></li></ul>'
你错过了ng-src属性周围的引号" "
,你可以直接使用images[0]
访问指令的隔离$作用域。你的img标签也缺少右括号>
。
这是您在vm
控制器中访问images
的方式:
scope:{
images: '='
},
controller: function($scope) {
this.images = $scope.images;
},
controllerAs: 'vm',
template: '<ul><li><img ng-src="{{vm.images[0]}}"></li></ul>'
你可以使用bindToController
来自动绑定指令的隔离作用域到控制器。只要确保你有controller属性存在,否则它会抛出一个错误。
.directive('myImageGallery', function(){
return {
restrict: 'E',
scope:{
images: '='
},
controller: function() {},
controllerAs: 'vm',
bindToController: true,
template: '<ul><li><img ng-src="{{vm.images[0]}}"</li></ul>'
};
});
相关文章:
- FireFox-在全局作用域中由id名称引用的元素.使用w3c标准
- AngularJS select with ng选项不更新父作用域中的引用对象属性
- 作用域,在回调中丢失对对象的引用
- Javascript-确定对象中是否有任何作用域引用
- Javascript setTimeout作用域引用了错误的变量
- 避免在 angularjs 指令中引用父作用域
- 如何更改对先前作用域中的对象的引用的函数
- 作用域变量正在创建引用而不是新实例
- 通过引用调用原型函数时,类会丢失“this”作用域
- 如何使用 ng-repeat引用作用域中的特定变量
- 如何从父控制器引用子作用域
- 如何将全局作用域变量引用到局部作用域中
- 在函数中传递(通过引用)作用域中的变量
- 如何查找属性在当前作用域中引用的命名空间
- 在不使用作用域的情况下,我应该如何引用控制器函数中的服务
- Javascript - 了解作用域链的引用优先级
- 在AngularJS中,作用域属性可以通过引用来传递吗?
- 引用,作用域在匿名函数中
- Javascript -是否有可能在函数定义后调用它自己,然后在作用域的其他地方作为函数被引用?
- 在没有$scope的指令中引用作用域变量