gpt4 book ai didi

AngularJS - 从嵌入范围访问指令范围

转载 作者:行者123 更新时间:2023-12-03 06:58:37 25 4
gpt4 key购买 nike

我有某种形式的指令。通常这就是我所需要的,但有时我需要添加一些更多的输入字段。所以我尝试使用嵌入来实现这一点,但它不起作用。

我创建了一个 plunker 来说明这一点:http://plnkr.co/edit/zNOK3SJFXE1PxsvUvPBQ?p=preview

指令是一个简单的表单,带有输入字段、嵌入和一个帮助测试它的按钮(未省略重要部分):

scope: {
},
transclude: 'element',
template:
'<form name="myForm">' +
'<input type="text" ng-model="data.inDirective"></input>' +
'<div ng-transclude></div>' +
'<button ng-click="showData()">show data</button>' +
'</form>'

这里它与嵌入一起使用:

<form-as-directive>
<input type="text" ng-model="data.inTransclude"></input>
</form-as-directive>

我可以在嵌入中使用指令的范围吗?

最佳答案

如果您需要将嵌入的 html 中的控件绑定(bind)到指令的(隔离)范围,则必须使用链接函数的 transcludeFn 参数“手动”(不使用 ng-transclude)进行嵌入。此功能允许您更改嵌入的范围。

scope: {
},
transclude: 'element',
replace: true,
template:
'<form name="myForm">' +
'<input type="text" ng-model="data.inDirective"></input>' +
'<div class="fields"></div>' +
'<button ng-click="showData()">show data</button>' +
'</form>',
link: function (scope, elem, attrs, ctrl, transcludeFn) {
// "scope" here is the directive's isolate scope
elem.find('.fields').append(transcludeFn(scope, function () {}));
}

否则,嵌入会自动绑定(bind)到父( Controller )作用域的(新)子级,以便访问该父作用域的属性(通过继承)。

关于AngularJS - 从嵌入范围访问指令范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19301692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com