我有一个简单的自定义指令,其中一个属性是一个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
。