AngularJS:从指令设置范围变量
angularjs: setting a scope variable from directive
首先我想要的:我有一系列缩略图。当我单击一个时,我希望该特定缩略图显示在更大的div 中,并带有其描述。(稍后:应动画化)。
现在我有指令和控制器,但我不知道如何设置适当的变量!
所以一些代码:第一个 HTML:这是本节的根.jade
文件。我有一条指令叫product
.
section
.detail-view(ng-show="vm.showDetail")
.prod-desc(ng-bind="vm.detailPic")
.prod-img(ng-bind="vm.detailDesc")
product.col-xs-12.product_tile(ng-repeat="item in vm.products", item="::item")
如您所见,product 指令是ng-repeat
的一部分;因此,我想显示调整大小的图像的div 在迭代之外 ( .detail-view
)。
产品指令:
'use strict';
ProductDirective.$inject = ['ShopCart', '$animate', 'User'];
function ProductDirective(ShopCart, $animate, User) {
return {
restrict: 'E',
scope: {
item: '='
},
template: require('./product.html'),
link: link
};
function link(scope, element) {
scope.toggleDetails = toggleDetails;
}
function toggleDetails() {
if (!scope.isSelected && isBlurred()) return;
scope.vm.detailPic = scope.item.photo;
scope.vm.detailDesc = scope.item.prod_description;
scope.vm.isSelected = !scope.isSelected;
scope.showDetail = !scope.showDetail;
var action = scope.isSelected ?
}
}
现在我想用大图像更新的div 在迭代之外 - 因此超出了指令的范围。如何设置showDetail
、showDesc
和showPic
的值?
由于我正在使用具有值vm
的controllerAs
,我认为我可以做scope.vm.detailPic = scope.item.photo;
,就像在其他解决方案中一样,我已经看到在根对象上设置属性时,它将被传播......但我得到
无法设置未定义的属性"详细信息图片"
目前,有效的(但对我来说看起来有点奇怪)是这样的,toggleDetails()
scope.$parent.$parent.vm.detailPic = scope.item.photo;
scope.$parent.$parent.vm.detailDesc = scope.item.prod_description;
scope.$parent.$parent.vm.showDetail = !scope.$parent.$parent.vm.showDetail
相关文章:
- ngDialog-弹出窗口未更新范围变量
- AngularJS范围变量Unwatch
- 将外部控制器的范围变量设置为角度
- 对于使用传递的数据计算的局部范围变量,角度绑定在自定义指令中不起作用
- 如何使用EnquireJS使AngularJS范围变量依赖于媒体查询
- 具有范围变量的控制器不工作
- 范围变量返回长度错误
- 将 NodeJS 模块范围变量作为对象访问
- Angularjs 更新 setTimeout 中的范围变量不起作用
- 递归承诺调用 - 内存范围变量问题
- AngularJS:从指令设置范围变量
- Angularjs:访问范围变量数组并计算平均值
- 范围变量更新,但不更新视图
- 从html调用angularjs控制器中的一个函数,但未定义范围变量
- 如何在编辑范围变量时(暂时)避免摘要循环
- 防止Angular范围变量通过引用自动绑定到服务私有成员
- 使用 AngularJS 从指令设置范围变量
- 集合回调忽略范围变量
- 使用forEach修改角度范围变量
- 因果报应测试中未定义的预期范围变量