http://plnkr.co/edit/03O57QBeMLzFiwdvaWOj?p=preview
我正在尝试创建一个界面,允许用户将块添加到页面并进行编辑。用户单击“添加块”按钮,然后选择要添加的块类型。
我的问题是用户点击“添加块”后没有按钮工作。如果我在selectBlock指令中注释掉范围,按钮将起作用但是我将无法传递块ID。
// comment this out and the buttons will work
scope: {
lrBlockId: '@'
},
非常感谢任何帮助。谢谢。
答案 0 :(得分:0)
您可以使用范围属性定义中的'&'
符号为您的指令授予对函数的访问权限:
app.directive('selectBlock', function() {
return {
restrict: 'A',
scope: {
lrBlockId: '@',
addHeaderBlock: '&',
addGalleryBlock: '&',
addSignupBlock: '&'
},
templateUrl: 'select-block-type.html'
};
});
然后,您需要使用元素属性将正确的函数映射到这些属性中:
<div ng-if='block.type === "select"' >
<div select-block lr-block-id="block.block_id"
add-header-block="addHeaderBlock(block.block_id)"
add-gallery-block="addGalleryBlock()"
add-signup-block="addSignupBlock()"></div>
</div>
这是一个有效的演示:http://plnkr.co/edit/mPjNDOw3El5isHQGwSYk?p=preview