繁体   English   中英

ng-init仅当value为null / undefined时

[英]ng-init only if value is null/undefined

有没有一种使用ng-init的方法,以便仅当ng-model值为null或未定义时才运行它?

我有这个输入

<input ng-model="entry.Value.Currency" type="text" placeholder="Currency">

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

现在,我在该字段中键入的内容都会被删除,这是因为.Currency不存在/是未定义的。 如果有助于输入的值,则始终保证entry.Value存在/不为null。

尝试将ng-init="entry.Value.Currency ='USD'"到输入字段,但这似乎什么也没做。

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

最适合您的是使用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

PS对不起,我花了很长时间才写出来,所以我去吃了午饭😀

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM