2016-10-21 2 views
0

で変数の値を変更し、コードがは、私が実行ブロックを持っているRUNブロック

.run(['$rootScope', 'formlyConfig', 'appApiCheck', 'licenseExpDateValue', 
    ($rootScope, formlyConfig, appApiCheck, licenseExpDateValue) => { 

    $rootScope.maskPlaceHolder = ''; 

    formlyConfig.setType({ 
     name: 'maskedInput', 
     extends: 'input', 
     template: '<input class="form-control" ng-model="model[options.key]" ng-required="{{licenseExpDateValue.required}}" ng-class="{\'has-error\':licenseExpDateValue.showError}"/>', 
     defaultOptions: { 
      ngModelAttrs: { 
       mask: { 
        attribute: 'ui-mask' 
       }, 
       maskPlaceholder: { 
        attribute: 'ui-mask-placeholder' 
       } 
      }, 
     templateOptions: { 
      maskPlaceholder: $rootScope.maskPlaceholder 
     } 
     } 
    }) 
}]) 

で以降、私は、サーバーからデータを取得し、$rootScope.maskPlaceholderを変更しますが、templateOptionsmaskPlaceholderはまだあります同じ。

maskPlaceHolderの更新方法templateOptions

ありがとう

+0

参照を保存するために直接割り当ての代わりに 'angular.copy'を試してみることもできますが、おそらくもっと良い方法があるようです。 'someConfigData'とは何ですか?それはどこに定義され、どの範囲に存在しますか? – Phil

+0

@phil、ありがとう。私は私の質問を更新しました。私はこのプラグインを使用しようとしていますhttp://angular-formly.com/#/example/integrations/ui-mask –

答えて

0

私はこれをワンタイムウォッチャーで行います。何かのように

.service('UpdateConfig', [ '$rootScope', 'formlyConfig', function ($rootScope, formlyConfig) { 
    var x = { 
    updateConfig: function (maskPlaceHolder) { 
     formlyConfig.setType({ 
     name: 'maskedInput', 
     extends: 'input', 
     template: '<input class="form-control" ng-model="model[options.key]" ng-required="{{licenseExpDateValue.required}}" ng-class="{\'has-error\':licenseExpDateValue.showError}"/>', 
     defaultOptions: { 
      ngModelAttrs: { 
      mask: { 
       attribute: 'ui-mask' 
      }, 
      maskPlaceholder: { 
       attribute: 'ui-mask-placeholder' 
      } 
      }, 
      templateOptions: { 
      maskPlaceholder: maskPlaceholder 
      } 
     }}); 
    }, 
    watcher: $rootScope.$watch('maskPlaceHolder', function (value) { 
     x.updateConfig(value); 
     x.watcher(); 
    }); 
    }; 
    return x; 
}]) 
.run(['$rootScope', 'UpdateConfig', 'appApiCheck', 'licenseExpDateValue', 
    ($rootScope, UpdateConfig, appApiCheck, licenseExpDateValue) => {  
    UpdateConfig.update(''); 
}); 
+0

これは本当にクールです。ありがとう –

関連する問題