角度传递参数到指令

时间:2015-04-21 12:03:35

标签: javascript angularjs

我试图通过指令中的视图传递一些信息,但它似乎根本不起作用。实际上,即使我绑定了作用域,我也有字符串值writter:

这是指令

angular.module('app')
    .directive('anomalieTableau', function () {

        var controller = ['$scope', '$attrs', 'srv_traitementsSite', function ($scope, $attrs, srv_traitementsSite) {
            $scope.anomalies = [];

            var idSite = $attrs.idsite;
            alert(idSite);
            var idAgence = $attrs.idagence;
            var dateDebut = $attrs.datedebut;
            var dateFin = $attrs.datefin;

            var promise = undefined;
            if (idAgence && idSite) {
                promise = srv_traitementsSite.TraitementSiteAgenceAnomalie(idSite, idAgence, dateDebut, dateFin);
            }

            promise.then(function (response) {
                $scope.anomalies = response.data;
            }, function (response) {

            });
        }];

        return {
            restrict: 'EAC',
            templateUrl: 'tpl/directive/AnomalieTableauDirective.html',
            controller: controller,
            scope: {
                idsite: '=',
                idagence: '=',
                datedebut: '=',
                datefin: '='
            }
        };
    });

以下是HTML调用:

<div anomalie-tableau idsite="site._id" idagence="AgenceId" datedebut="dateDebutStats"
                     datefin="dateFinStats" class="col-md-12"></div>

这是指令中的警报结果:

  

site._id

而不是:

  

123456789

编辑:在属性指令的调用中通过{{site._id}}更改site._id,它不会改变任何内容并给我这个错误:

  

语法错误:令牌'site._id'是意外的,期望[:]在列   表达式[{{site._id}}]中的3个,从[site._id}}开始。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

属性总是字符串。因此,您需要插入值({{site._id}}),然后将字符串($attrs.idsite)转换为所需类型。

关于范围设置:然后您必须使用$scope而不是$attrs(并且不需要插值),因为angular会将这些值复制到您的范围。如果使用=,它将是双向绑定,您不需要在指令属性中插值。

如果由于某种原因需要使用$attrs,您可以自己进行插值。删除范围设置,使用idsite="{{...}}"并将$ interpolation服务注入您的指令。

然后使用$interpolate($attrs.idsite)($scope.$parent)获取值(字符串)。

http://plnkr.co/edit/zhBXyiz82EdmysLzeBNL?p=preview

(请注意,在我的plnkr中,我在范围设置中使用了@。您可以将其删除或保留。使用@ angular将为您执行插值并将值存储在你指令的$scope对象。)