更改指令控制器内的attrs中对象的值

时间:2016-09-01 05:48:43

标签: angularjs angular-directive

我的指令如下

<div ng-controller=prdController as prd>   
<my-dir data=prd.data ng-click=stateChanged()></my-dir>
</div>

其中prd.data是一个对象。在我的指令中,我做了以下

app.directive('myDir',function(){
    return {
        scope:{
            data:'=data'
        },
        templateUrl: './templates/testtemplate.html',
        controllerAs:'bd',
        controller:function($scope,$attrs){
            this.stateChanged = function (value) {
                $attrs.data = { 'fd','sdfs'};
            }
       }
     });

我无法修改控制器内的数据值如何提前感谢。

2 个答案:

答案 0 :(得分:0)

我认为问题可能在于您尝试在控制器中获取data对象。

您应该尝试通过$scope.data获取它。所有指令输入都附加到您的内部范围。

$attrs - 是一个哈希对象,具有标准化属性名称的键值对及其对应的属性值。根据AngularJS文档。

答案 1 :(得分:0)

试试这个

var app = angular.module("myApp", []);
app.controller("prdController", function($scope) {
  $scope.data = "krupesh";
  $scope.stateChanged = function() {
    $scope.data = "kotecha";
  }
});
app.directive('myDir', function() {
  return {
    restrict: 'E',
    template: "<div>{{data}}</div>"
  };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller=prdController as prd>
  <my-dir data="prd.data" ng-click=stateChanged()></my-dir>
</div>