在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
错误。
答案 0 :(得分:0)
发生$parse.syntax
错误,因为scheduleDirCtrl.callToggle
不属于类型函数。为callToggle
执行类似的操作:
this.callToggle = function() {
this.schedule.toggle(person, $attrs.day);
}