0

Angular JS ui.bootstrap のツールチップとしてレンダリングする値を返す関数を使用しようとしています。ng-repeat ループで正しいツールチップを取得できるように、これを行う必要があります。などのhtmlツールチップの値に直接アクセスすると、ツールチップは正常に機能しtooltip="{{tooltips.rules.start}}ますが、関数を使用して のtooltipHelperような値を返すとtooltip="tooltipHelper('rules', '{{fieldName}}')"、ツールチップを文字列として設定するだけでは機能しませんtooltipHelper('rules', 'start')

関連コード:

JS

$scope.tooltips = {
            rules: {
                name: '',
                weight: 'Sorts the rules, larger values sink to the bottom',
                active: 'Enable/disable rule',
                tag: 'Select a tag from the allowed tags list. To add tags to the allowed list go to the "tags" page',
                start: 'Click to set the start time',
                end: 'Click to set the end time',
                activate: 'Click to set the activate datetime',
                expire: 'Click to set the expire datetime'
            }
        };

$scope.tooltipHelper = function(type, name){
            return $scope.tooltips[type][name];
        };

HTML/ジェイド

div.required(ng-repeat="fieldName in datetime.fields", id="{{fieldName}}")
    input.form-control.datetime(type="text", value="{{fieldName}}, tooltip="tooltipHelper('rules', '{{fieldName}}')")
4

2 に答える 2

0

問題は、補間を tooltipHelper 関数呼び出しに適用する必要があることです。これにより、二重補間マークアップが発生します。

次のいずれかの方法で問題を解決します。

  1. 関数 tooltipHelper のコードをインライン化します。
    div.required(ng-repeat="datetime.fields のフィールド名", id="{{fieldName}}")
        input.form-control.datetime(type="text", value="{{fieldName}}, tooltip="{{tooltips[type][name]}}")

  1. {{fieldname}} の内部補間を削除し、tooltipHelper 関数を変更してスコープから fieldName にアクセスします。
    $scope.tooltipHelper = 関数(型){
        var name = $scope.fieldName;
        $scope.tooltips[タイプ][名前]を返します。
    };

    div.required(ng-repeat="datetime.fields のフィールド名", id="{{fieldName}}")
        input.form-control.datetime(type="text", value="{{fieldName}}, tooltip="{{tooltipHelper('rules')}}")

于 2015-04-22T05:55:29.787 に答える
0

@umariusの答えと朝の脳が私を答えに導いたことがわかりました:

tooltip="{{tooltipHelper('rules', fieldName)}}"

変数を補間なしで渡すことを許可すると、正常に機能し、戻り値を取得した後に補間します。

于 2015-04-22T13:46:08.767 に答える