0

(より複雑なバージョンの)のように、すべて同じように見えるAngularディレクティブがたくさんあります

app.directive('note', function () {
    return {
        restrict: 'E',
        transclude: true,
        template: '<div class="' + 'note' + '"></div>
    }
});

他の多くのものにnote置き換えられます。DRYのままにするために、それらすべてをループで定義したいと思います。私は試した

var dirs = ['note', 'introduction', 'thing'];

for (var dir, i = 0; dir = dirs[i]; i++) {
    app.directive(dir, function () { ... });
}

無駄に。これを行う良い方法はありますか?

4

2 に答える 2

2

私はあなたがこれをするべきではないと思います。代わりに、値をディレクティブに渡す必要があります。ただし、本当にそれを行う必要があると感じた場合は、問題なく動作します: fiddle

HTML:

    <div ng-app="myApp">

        <div ng-controller="MyCtrl">
          Hello, {{name}}!
        </div>
        <introduction> </introduction>
        <note></note>
        <thing></thing>
        <notAThing></notAThing>
    </div>

JS:

    var myApp = angular.module('myApp',[]);

    var dirs = ['note', 'introduction', 'thing'];

    angular.forEach(dirs, function(dir) {
        myApp.directive(dir, function() {
            return {
                restrict: 'E',
                transclude: true,
                template: '<div class="' + dir + '">something</div>'
            }
        });
    });
于 2013-07-05T23:10:50.400 に答える
0

これは私が話している初心者かもしれないと言わざるを得ませんが、あなたが何をしているのかを知っていれば、これに大きな問題はないと思います:

(function() {
  var createDirective, module, pluginName, _i, _len, _ref;

  module = angular.module('FacebookPluginDirectives', []);

  createDirective = function(name) {
    return module.directive(name, function() {
      return {
        restrict: 'C',
        link: function(scope, element, attributes) {
          return typeof FB !== "undefined" && FB !== null ? FB.XFBML.parse(element.parent()[0]) : void 0;
        }
      };
    });
  };

  _ref = ['fbActivity', 'fbComments', 'fbFacepile', 'fbLike', 'fbLikeBox', 'fbLiveStream', 'fbLoginButton', 'fbName', 'fbProfilePic', 'fbRecommendations'];
  for (_i = 0, _len = _ref.length; _i < _len; _i++) {
    pluginName = _ref[_i];
    createDirective(pluginName);
  }

}).call(this);

^これは私のコードではなく、私が拾って私のために働いたものです。これがうまくいく方法は、配列内のいずれかの値に設定されたクラスを持っている場合、facebook javascript にノード/要素を解析させようとすることです。

于 2013-07-05T23:13:39.993 に答える