AngularJS:如何访问指令'的范围
AngularJS : How to access the directive's scope in transcluded content?
我的transcluding指令无法工作。我想做以下事情:创建一个指令,输出一个列表,其中每个项的内容由transcluded内容定义。例如:
<op-list items="myItems">
<span class="item">{{item.title}}</span>
</op-list>
因此,我将在操作列表的模板中使用ng-reeat,并且必须能够访问由ng-rerep在transcluded内容中创建的范围。
这就是我迄今为止所做的:
var myApp = angular.module('myApp', []);
myApp.controller('MyCtrl', ['$scope', function ($scope) {
$scope.myModel = {
name: 'Superhero',
items: [{
title: 'item 1'
}, {
title: 'item 2'
}]
};
}]);
myApp.directive('opList', function () {
return {
template: '<div>' +
'<div>items ({{items.length}}):</div>' +
'<div ng-transclude ng-repeat="item in items"></div>' +
'</div>',
restrict: 'E',
replace: true,
transclude: true,
scope: {
items: '='
}
};
});
<html ng-app="myApp">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-controller="MyCtrl">
<div>Hello, {{myModel.name}}!</div>
<op-list items="myModel.items">
<span>title: {{item.title}}|{{$scope}}|{{scope}}|{{items}}</span>
</op-list>
</div>
</html>
检查这是否有效:
myApp.directive('opList', ['$scope', function ($scope) {
return {
template: '<div>' +
'<div>items ({{model.items.length}}):</div>' +
'<ng-transclude ng-repeat="item in model.items"></ng-transclude>' +
'</div>',
restrict: 'E',
replace: true,
transclude: true,
scope: {
items: '='
}
};
}]);
若并没有,那个么试着在控制台中检查$scope,看看你们是否能够访问你们的模型。
相关文章:
- AngularJS指令范围约束问题重复出现
- AngularJS:从控制器访问特定的指令范围
- 隔离范围-仅在指令范围内定义的值必须执行更改
- 指令范围
- 在ng重复中使用时的指令范围
- 角度指令模板输入不会更新指令范围
- 属性内的角度指令范围继承
- AngularJS:如何在指令范围的对象发生变化时更新与控制器作用域相关联的控制器作用域
- 如何从父指令/控制器访问指令范围
- AngularJS:在成功的HTTP请求后更新指令范围
- 购物指令范围问题
- 角度指令范围为空
- 在指令“范围”中需要值属性
- AngularJS 指令范围和$compile - 返回空白的变量
- AngularJS指令范围似乎只接受一个参数
- AngularJS :如何从相同的指令控制器访问指令范围
- 通过指令范围传递对象不起作用
- 指令范围重写父值
- 角度指令 - 范围返回 0 而不是值
- AngularJS 父指令范围来自内部 ng-transclude