10

angularJs を使用してカスタム タグを作成しようとしています。このタグには、 という名前の属性がありますdatadataこのように値を取得します<skillviz data="{{user.info}}"></skillviz>user.infoJSON オブジェクトです。しかしdata、ディレクティブ定義でこの属性にアクセスしようとすると、 undefined. これを行う正しい方法は何ですか?

htmlコード

<div id="info-box" ng-repeat="user in users | orderBy:orderProp">            
          <div id="skill-block">
            <skillviz height="50" data="{{user.skills}}"></skillviz>
          </div>
      </div>

usersコントローラーで宣言された JSON 型オブジェクトです。したがって、基本的usersにはリスト(配列)になります

{"first_name": "Tifanny",

        "last_name": "Maxwell",
        "skills": [
            {"name": "Java", "score": 4.8, "color" : "red"},
            {"name": "C++", "score": 4.0, "color" : "blue"},
        ]
    }, 

services.js

angular.module('yott', []).directive('skillviz', function () {
return {
    restrict: 'E',
    link: function (scope, element, attrs) {
        element.html("<script>alert(" + attrs['data'] + ")</script>");
        });
    }
  }
});

警告ボックスがポップアップし、未定義と表示されます

4

2 に答える 2

19

次のマークアップがあるとします。

<div ng-controller="MyController" data-id="someCustomValue">
</div>

これで、コントローラーで次のようにしてdata-idにアクセスできます。

app.controller('MyController', function ($scope, $attrs) {
  console.log($attrs.id); // Prints 'someCustomValue'
});
于 2013-07-03T17:07:15.823 に答える