gpt4 book ai didi

javascript - 在 Angular Directive(指令)中动态包含标记上的函数

转载 作者:行者123 更新时间:2023-11-28 07:20:47 25 4
gpt4 key购买 nike

在 angularjs 中创建一个新的元素指令。在部分模板的 HTML 标记中,我需要动态指定 ng-click 属性的函数。我尝试了多种方法来实现此目的,但所有方法都收到 $parse.syntax 错误。

我已经包含了最新尝试的代码,希望有人能告诉我我做错了什么。

指令模块:

(function(){

angular.module('scheduleDirective', [])

.directive('schedule', function() {
return {
restrict: 'E',
scope: {
person: '=',
day: '=',
},
templateUrl: 'schedulepartial.html',
controller: function($scope, $element,$attrs,$http){

this.callToggle = "schedule.toggle(person, '" + $attrs.day + "')";
this.setClass = '{' + "'active' : person[" + $attrs.day + "], 'btn-primary' : person[" + $attrs.day + '] }';

this.toggle = function(person,day){
console.log("toggle" + person.name + day);
.
.
.
s},
controllerAs: 'scheduleDirCtrl'
};
});

指令部分:

    <a href="#" class="btn btn-outline btn-sm"  ng-click= {{scheduleDirCtrl.callToggle}}  
ng-class={{scheduleDirCtrl.setClass}}>{{day}}</a>

根据以下答案更新:

<a href="#" class="btn btn-outline btn-sm"  ng-click=scheduleDirCtrl.callToggle()  
ng-class={{scheduleDirCtrl.setClass}}>{{day}}</a>

索引页的 HTML 标记:

<schedule person = person day="july25">July 25</schedule>

奇怪的是,ng-class 属性工作正常,但 ng-click 属性中的相同模式会生成 $parse.syntax 错误。

最佳答案

发生$parse.syntax错误是因为scheduleDirCtrl.callToggle不是函数类型。只需对 callToggle 执行类似的操作即可:

this.callToggle = function() {
this.schedule.toggle(person, $attrs.day);
}

关于javascript - 在 Angular Directive(指令)中动态包含标记上的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30338385/

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