0

郵便番号を取得するシステム全体で再利用されるディレクティブを作成しています。

//postcode grabber
app.directive('postcodes',
    function ($rootScope, $http) {
        return function (scope, element, attrs) {
            element.bind('change', function () {
                var modal_element = angular.element('#myModal');
                var ctrl = modal_element.controller();
                var url = '/postage/postcodes/?suburb=' + element.val() + "&target_suburb=" + attrs.targetSuburb + "&target_state=" + attrs.targetState + "&target_postcode=" + attrs.targetPostcode;
                ctrl.setModal(url);
                modal_element.modal('show');
            });
        };
    });

コントローラーを持つ変更時にブートストラップモーダルウィンドウを開きます。

function PostcodesCtrl($scope, $parse) {
    $scope.populate = function (suburb, state, postcode, target_suburb, target_state, target_postcode) {
        //lets grab the controller of the target postcode
        var tpscope = angular.element(target_postcode).scope();
    }
}
PostcodesCtrl.$inject = ['$scope', '$rootScope'];

入力要素「ID」(eg.#suburb) を使用して、ターゲット入力フィールド (tpscope 行) のスコープにアクセスすることはできましたが、ngModel 値は常に異なる名前になるため、更新方法がわかりません。

これが、target_suburb、target_postcode などをサーバーに送信し、サーバーに ng-click を送信して「populate」関数に戻す理由です。

スコープ変数に動的にアクセスすることは可能ですか? $scope[whatever].. のようなものですか?

更新: $scope[var] no probs にアクセスできることがわかりましたが、ng-model 名には小数点が含まれます... たとえば、「model.suburb」-それは気に入らないようです。

誰かがこれを行う方法についてより良いアイデアを持っている場合は、私に知らせてください!

4

1 に答える 1

0

ngModel 値の場合.、ディレクティブで解析して使用するには特別な処理が必要です。$parseスコープのコンテキストでモデルを処理するには、サービスを使用する必要があります。何かのようなもの

 var getter=$parse(attrs.ngModel);
 var setter=getter.assign;
 setter(scope,!getter(scope));
于 2013-09-03T10:00:42.097 に答える