gpt4 book ai didi

javascript - 在 Angularjs 中的另一个指令模板中使用一个指令

转载 作者:行者123 更新时间:2023-11-29 15:32:26 26 4
gpt4 key购买 nike

我是 Angularjs 的新手,尝试在另一个指令中实现一个指令。我有一个子指令 basetext处理基本输入事件和myTextbox处理与输入相关的其他任务。我做了一个simple plunker 来证明我的问题。我已经实现为

html

<div my-textbox placeholder="'Input the value'" caption="Name:"></div>

myTextbox指令模板函数:

template: function (elem, attrs) {
return ("<label>" + attrs.caption + "</label>\
<input class='inputText' basetext='' " + "placeholder=" + attrs.placeholder +"/>");
},

和我的 basetext指令:

app.directive("basetext", function () {
return {
restrict:'A',
scope:{}
template: "<input ng-focus='isFocus()' ng-blur='isBlur()'/>",
link: function (scope, element, attrs) {

scope.isBlur = function () {
alert("is blurred");
}
scope.isFocus = function () {
alert("is focused");
}
}
}
});

问题是 blur事件和 focus basetext的事件指令根本不起作用。有什么解决这个问题的建议吗?谢谢

最佳答案

检查元素,你会看到

enter image description here

basetext 的模板在无效的输入标签内。

您需要在 basetext 指令上放置 replace: true, 属性,因为它将替换子指令模板的元素。

app.directive("basetext", function () {
return {
restrict:'A',
replace: true,
scope:{},
template: "<input ng-focus='isFocus()' ng-blur='isBlur()'/>",
link: function (scope, element, attrs) {

scope.isBlur = function () {
alert("is blurred");
}
scope.isFocus = function () {
alert("is focused");
}
}
}
});

这里是 DEMO

关于javascript - 在 Angularjs 中的另一个指令模板中使用一个指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33470451/

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