0

ページでの一部のアイテムの表示方法を変更するtrue/falseに設定しているフラグがあります。テンプレートに値を取得して実際に機能させるのに問題が発生しています。通常のHTML(テンプレート内ではない)は正常に機能します。

restrict: 'E',
        scope: {
            speedDirection: "@",
            speedName: "@",
            value: "@",
            editElements: "="
        },
        template:
        '<div>'+
          '<p class="body-text">{{speedDirection}} '+
          '<input type="text" name="{{speedName}}" value="{{value}}" ng-show="editElements">'+
          '<span ng-hide="editElements">{{value}}</span>'+
          '</p>'+
        '</div>',

ただし、渡された値だけでなく、editElementsの動的モデル値を使用したいと思います。そうすれば、変更されたときに、表示されたテンプレートの更新が反映されます。変数は、テストデータを保存しているオブジェクトで定義されています。

function MyObject($scope) {
    $scope.editElements = true;

これを機能させる方法はありますか?「@」や{{editElement}}ビットなどを使用して、(上記のように)通過させてみました。カスタムHTML部分:

<speed-limit speed-direction="A to B:"
                    speed-name="reverse"
                    value="{{newObject.speedLimit[0]}}"
                    editElement="editElements">
                    </speed-limit>

更新: Batarangをインストールしましたが、カスタム要素の特定の部分(速度制限)に「editElement:null」が表示されます。ただし、editElementsが参照される他の領域は正しく設定されています。これは奇妙なスコープの問題ですか?

4

1 に答える 1

2

コメントで説明されているように、同じ名前を属性の名前に使用できますが、スネークケースにする必要があるため、edit-elements="editElements":

<speed-limit speed-direction="A to B:"
     speed-name="reverse"
     value="{{newObject.speedLimit[0]}}"
     edit-elements="editElements">
</speed-limit>

これについて気を悪くしないでください...すべての Angular 開発者は、これで自分の人生の少なくとも 1 時間 (またはそれ以上) を無駄にしていると思います。

于 2013-02-06T18:37:26.293 に答える