Angularjs - 访问控制器中的javascript对象

时间:2015-05-20 19:42:54

标签: javascript angularjs angularjs-directive controller scope

我有一个简单的自定义指令,其中一个属性是一个javascript对象。我尝试了多种方法从控制器访问对象,但没有运气。

index.html中的自定义指令

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

指令部分(schedulepartial.html):

<a href="#" ng-click=scheduledirctrl.calltoggle() ng-class={{scheduledirctrl.setClass}}>July 25</a>

指令模块:

angular.module('scheduleDirective', [])

.directive('schedule', function() {

  return {
    restrict: 'E',
    scope: {
      iperson: '=person',
          day: '=',
    },
    templateUrl: 'schedulepartial.html',

    link: function(scope, element, attributes){

        console.log("link person name "+scope.iperson.name);
        scope.person = scope.iperson;
    },

    controller: function($scope, $element,$attrs,$http){

            $scope.day = $attrs.day
            this.calltoggle = function() {
                this.toggle($scope.person, $scope.day);
            }

            this.setClass = "{'active' : person." + $attrs.day + ", 'btn-primary' : person." + $attrs.day + " }";

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

link函数中,我可以访问日志中验证的对象。根据类似问题的其他答案,我尝试将对象保存在范围内的新属性中。

但是,在controller中,当我访问$scope.person$scope.iperson以将其发送到toggle()函数时,我收到undefined错误。

奇怪的是,从ng-class收到的this.setClass表达式效果很好,并且正在访问person

0 个答案:

没有答案