gpt4 book ai didi

javascript - AngularJS 和自定义方法/html 的指令

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

我有这个代码:

<body ng-controller="testController">
<div test-directive transform="transform()">
</div>


<script type="text/ng-template" id="testDirective.html">
<div>
<p>
{{transform()}}
</p>
</div>
</script>

<script>
angular.module("Test", [])
.directive("testDirective", function() {
return {
templateUrl: "testDirective.html",
scope: {
transform: "&"
},
link: function(scope) {

}
};
})
.controller("testController", function($scope) {
$scope.transform = function() {
return "<a ng-click='somethingInController()'>Do Something</a>";
};

$scope.somethingInController = function() {
alert("Good!");
};
});
</script>

</body>

所以基本上我想要完成的是创建一个带有将从 Controller 调用的方法的指令。该方法将对传递的值执行某些操作(在本例中它不会接收任何内容,但在实际代码中它会接收到任何内容)。

到目前为止,一切正常。然而,我想做的下一件事是创建一个将调用 Controller 中的方法的元素。该指令不知道元素的类型(可以是任何东西)也不知道方法是什么。有什么办法可以做到吗?

fiddle 示例:

http://jsfiddle.net/abrahamsustaita/C57Ft/0/ - 版本0

http://jsfiddle.net/abrahamsustaita/C57Ft/1/ - 版本 1

fiddle 示例工作

http://jsfiddle.net/abrahamsustaita/C57Ft/2/ - 版本 2

版本 2 现已运行(我不确定这是否可行,但它可以运行...)。但是,我无法在父 Controller 中执行该方法。

最佳答案

是的。但是您的代码存在一些问题。我首先回答你的问题。

<test-directive transform='mycustommethod'></test-directive>

// transform in the directive scope will point to mycustommethod
angular.module('app').directive('testDirective', function() {
return {
restrict: 'E',
scope: {
transform: '&'
}
}
});

问题是打印 html 会被转义,你会得到

而不是 < (等)。您可以使用 ng-bind-html 代替,但返回的 html 将不会被绑定(bind)。您需要在链接方法中手动注入(inject) html(可以使用 jquery),并使用 var generated = $compile(html)(scope) 绑定(bind)结果。然后调用 ele.after(compiled)ele.replace(compiled) 将其添加到您的页面。

关于javascript - AngularJS 和自定义方法/html 的指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25148993/

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