AngularJS - 从指令

时间:2015-12-01 22:51:26

标签: javascript angularjs angular-directive

好的,所以我有一个指令,它接受属性并读取它(并将其写出来)。

以下是plunker:http://embed.plnkr.co/IkKPLahPc9yqeHWEQUG3/

我认为这是因为控制器: main-directive.js 中的 ctrl 没有任何内容,而实际操作发生在隔离指令中#&# 39; s控制器控制器

这是 main-directive.js

var app = angular.module('testapp.directive.main', ['main']);


app.directive('myCustomer', function() {

  var controller = ['$scope', function($scope) {

    $scope.dan = { 'name': 'Dan', 'nationality': 'ESP' };
    // scope from here obv...

  }];

  var template = 'Getting attribute value of =getInfo... {{getInfo.name}} from {{getInfo.nationality}}';

  return {
    restrict: 'E',
    controller: controller,
    scope: {
      getInfo: "=info"
    },
    template: template
  };
});

app.controller('ctrl', function($scope) {

})

这是我的模板:

<div ng-controller="ctrl">
    <my-customer info="dan">
    </my-customer>
</div>

为什么我的指令没有读取信息的属性?

2 个答案:

答案 0 :(得分:1)

你是对的,$ scope.dan对象需要位于'ctrl'控制器范围内,并从isolate指令控制器范围中拉出。

app.controller('ctrl', function($scope) {
    $scope.dan = { 'name': 'Dan', 'nationality': 'ESP' };
})

这适用于为&#34; = info&#34;

使用的getInfo设置的双向数据绑定方法

答案 1 :(得分:0)

编码的方式是,期望ctrl控制器在其作用域上有一个名为“dan”的属性。如果您只是传入字符串'dan',则需要将指令更改为使用@而不是=

thing