gpt4 book ai didi

javascript - 使用 ng-click 和 angularjs 从页面调用指令的函数

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

我应该如何使用 ng-click 从 html 页面(例如索引)调用指令的函数?这是我的指令的代码:

            $scope.moreText = function() {
$(".showMore").append(lastPart);

};

html:

<a ng-click='moreText()' class='showMore' href='#'>... show more</a>

我的问题是点击时没有调用 moreText() 。我知道这不是正确的 $scope。但我如何访问它?

更新:

angular.module('myapp').controller('FormTestCtrl', ['$scope', '$timeout', '$window',
function($scope, $timeout, $window) {


$scope.moreText = function() {
console.log("more text function***************");
$(".showMore").append(lastPart);
};
}
]);

更新:#2

以下是大部分指令:

    angular.module('myapp').directive('tooltip', function($window, $timeout) {

return {

restrict: 'A',
replace: false,
scope: {

},

link: function ($scope, element, attrs, $parse, $timeout) {

$scope.moreText = function() {};
$scope.sb = false;
var tooltext = attrs.tooltip;

...
if (tooltext.length > 10){
var firstPart = tooltext.substring(10, 0);
var lastPart = tooltext.substring(11, tooltext.length);

tooltext = firstPart + "<a ng-click='moreText()' class='showMore' href='#'>... show more</a>";
}

$scope.tipText = function(){
element.append("<div class='tooltip'>"+tooltext+"</div>");
};
$scope.moreText = function() {
console.log("more text function***************");


$(".showMore").append(lastPart);

};

}

}
});

最佳答案

仅附加或更改元素 html 不足以让 Angular 绑定(bind)指令(如 ngClick)。

这个 plunk 将为如何重新编译指令元素的 HTML 提供基础:

https://embed.plnkr.co/t7qCM48dRyGmwHAZBffs/

重要的一点:

element.html(html);
$compile(element.contents())(scope);

这将使 Angular 意识到 ng-click 或您想要插入到元素中的任何新指令。我使用了观察者,但它只是作为示例。如果您知道您的输入参数不会改变,您可以摆脱观察者。

关于javascript - 使用 ng-click 和 angularjs 从页面调用指令的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38359766/

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