在角度指令

时间:2015-05-20 00:39:39

标签: javascript html angularjs angularjs-directive

在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错误。

1 个答案:

答案 0 :(得分:0)

发生$parse.syntax错误,因为scheduleDirCtrl.callToggle不属于类型函数。为callToggle执行类似的操作:

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