仅当value为null / undefined时才使用ng-init

时间:2017-04-20 10:52:33

标签: javascript angularjs

有没有办法使用ng-model,只有在<input ng-model="entry.Value.Currency" type="text" placeholder="Currency"> 中的值为null或未定义时才会运行?

我有这个输入

"Currency"

如果entry.Value.Currency == null,我希望将'EUR'值设置为“USD”。请注意,它可能包含完全不同的值,如.Currency,在这种情况下,我希望代码不执行任何操作。

现在我在字段中输入的内容只是被删除了,我认为这是因为entry.Value不存在/未定义。如果有帮助,ng-init="entry.Value.Currency ='USD'"的值始终保证存在/不为空。

尝试将Currency添加到输入字段,但似乎根本没有做任何事情。

我想在不初始化javascript中的entry.Value变量的情况下完成此操作,因为可以动态添加输入,并且它们添加到entry.Value = {};的值可能会有所不同。我知道每个输入控件的唯一内容是{{1}}

2 个答案:

答案 0 :(得分:1)

最适合您的是使用ngModelController

的指令

我已经写了一个应该做你想做的事情,它的代码是

myApp.directive('currencyInit', function() {
  return {
    restrict: "A",
    require: 'ngModel',
    link: function(scope, element, attrs, ngModel) {
      if (!ngModel) return;

      ngModel.$render = function() {
        if (ngModel.$modelValue == undefined || ngModel.$modelValue == null) {
          ngModel.$setViewValue('USD');
        }
        element.val(ngModel.$viewValue);
      }  
    }
  }
});

要了解它的实际效果,您可以查看此JSFiddle

P.S。对不起,我花了很长时间才写下来,我出去吃午饭

答案 1 :(得分:0)

您可以使用ng-attr-placeholder="{{!entry.Value.currency?'USD':'something'}}"