以角度方式数据绑定到指令内的控制器

时间:2014-10-27 01:45:38

标签: angularjs angularjs-directive

我是角色的新手并拥有以下指令:

angular.module('myApp')
  .directive('myDirective', function () {
    return {
      templateUrl: '/views/partial-views/partial.html',
      restrict: 'E',
      controller : function(){
        age : '5'
      },
      controllerAs : 'myCtrl'
    };
  });

我想在partial.html中的age.html中包含年龄,如下所示:

<div ng-app="myApp" ng-controller="myCtrl as s">
    {{s.age}}
</div>

但是我收到以下错误:

Error: [ng:areq] Argument 'myCtrl' is not a function, got Object

有谁能告诉我我做错了什么?

2 个答案:

答案 0 :(得分:2)

Chandermani提到的绝对正确。为了更加精确,可以写成,

指令定义

angular.module('myApp')
    .directive('myDirective', function () {
        return {
            templateUrl: '/views/partial-views/partial.html',
            restrict: 'E',
            controller: ['$scope', function($scope){
                $scope.age = '5'
            }]
    };
})

用法

<div ng-app="myApp">
    <my-directive>
    {{age}}
    </my-directive>
</div>

但是,这里没有定义指令的意义。您只需使用控制器定义即可完成相同的操作。

答案 1 :(得分:1)

您的代码存在两个问题。首先,您不要在模板中使用ng-controller再次为控制器设置别名,以便需要将其移除。

其次控制器是一个函数而不是对象,所以使用:

this.age = '5';