从单独的控制器访问指令作用域
Accessing directive scope from a separate controller
假设我在AngularJS中有一个<lightbox>
指令。lighbox有两个参数:title
和image_source
,这两个参数在其HTML中分别用{{title}}
和{{image_source}}
引用。
因为我使用Bootstrap的模态,所以指令必须说明页面的最外部范围(如果我将其插入内部DOM元素,则可能会出现显示问题)。
我知道,如果指令在"父"控制器中,有很多交互方式:
<div ng-controller="ParentCtrl">
<lightbox src='mySrc' ... >
</div>
但我不得不退出:
<div ng-controller="ParentCtrl">
</div>
<lightbox ...>
(编辑:澄清:我被迫将模态OUT放入控制器(这是路由调用的模板),因为如果不这样做,它的交互会很糟糕。另一种方法是将所有页面包装在主控制器中,但我不确定它是否优雅。)
但是,我如何访问内部指令范围并动态更改这两个值呢?
(编辑:考虑使用服务,但不确定这是否是正确的方式)
这是将rootscope调用到指令的方法
angular.module("directiveAPP", [])
.controller("directiveController", function ($scope, $rootScope) {
$rootScope.src = "http://picbook.in/wp-content/uploads/2014/07/image_123.jpg";
$rootScope.title = "hai";
}).directive("lightBox", function () {
return {
restrict: 'E',
template: '<div><img src="{{imageSrc}}" title="{{imageTitle}}" width="100px" style="border:solid #ddd 1px;" /></div>',
scope: {
imageSrc: '=',
imageTitle: '='
}
};
});
这是指令的一个用途
<div ng-app="directiveAPP">
<div ng-controller="directiveController">
<light-box image-src="src" image-title="title"></light-box>
</div>
<light-box image-src="src" image-title="title"></light-box>
</div>
FIDDLE链接
相关文章:
- 如何将多槽transclude作用域设置为指令作用域
- 指令作用域始终为空
- 如何在angularjs中访问一个指令作用域值到另一个指令
- AngularJS指令作用域未解析(“属性名称未定义”错误)
- 角度指令作用域绑定在 ng-repeat中不起作用
- 指令 作用域更改时无法触发
- 角度JS指令作用域变量关系
- 如何使用用@定义的指令作用域生成ng-if
- 使用指令作用域变量呈现的动态模板
- 在指令作用域和控制器$scope之间共享数据
- 在没有自己的控制器的情况下使用指令作用域何时合适
- 是否可以链接指令作用域(例如obj.prop)
- 与控制器在同一元素中的自定义指令作用域
- 将指令作用域值绑定到HTML
- AngularJS-获取一个输入值并将其传递给父指令作用域
- 正在与子指令作用域共享作用域对象
- angularjs中没有更新指令作用域变量
- 如何从控制器调用指令作用域上的函数
- 从控制器外部访问指令作用域
- 异步上未更新指令作用域