gpt4 book ai didi

javascript - 如何将指令作用域值传递给同一指令模板中调用的全局 JavaScript 函数?

转载 作者:行者123 更新时间:2023-11-27 23:22:09 25 4
gpt4 key购买 nike

我对指令中值(value)观的运作方式有疑问。我有一个指令,它有一个模板,在同一个模板中,我想调用一个(全局定义的)javascript 函数,并将我从 指令 获得的值传递到该 javascript 函数中(它可能听起来有点令人困惑)。这是示例代码。

angular.module("Shell").directive("myFormField", function () {
return {
scope: {
text: "@",
required: "@",
},
transclude: true,
replace: true,
template:
'<div>' +
'<label style="white-space: nowrap;font-weight: normal;width: 100% !important">'+globalLoadText(text)+
'<div style="margin-top: 1.5px;" ng-transclude />' +
'</label>' +
'</div>'
};
});

globalLoadText() 是我在 Angular 之外定义的全局方法(在根范围内的普通 js 文件中)text 将是我想要从指令中获取的值。

我希望我已经清楚地写下了我的问题。任何帮助将不胜感激。谢谢!!

最佳答案

我强烈建议你解释一下为什么你需要一个全局函数,因为实现你想要的并不难。但这并不意味着您应该这样做。

angular
.module("Shell")
.directive("myFormField", myFormFieldDirective);


myFormFieldController.$inject = ['$scope'];

function myFormFieldController($scope) {
$scope.globalLoadText = _globalLoadText;

function _globalLoadText() {
return globalLoadText($scope.text);
}
}


function myFormFieldDirective() {
return {
scope: {
text: "@",
required: "@",
},
transclude: true,
replace: true,
controller: myFormFieldController,
template: '<div>' +
'<label style="white-space: nowrap;font-weight: normal;width: 100% !important">{{globalLoadText()}}' +
'<div style="margin-top: 1.5px;" ng-transclude />' +
'</label>' +
'</div>'
};
}

关于javascript - 如何将指令作用域值传递给同一指令模板中调用的全局 JavaScript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35304534/

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