Angular:仅在select为脏时定义ng-model

时间:2015-03-13 10:03:18

标签: javascript angularjs

我遇到的问题是我希望文本输入为空,而它有一个具有默认值的已定义ng模型,然后,当输入变脏时,我想要那个特定的ng-model重新定义。例如:

<span ng-init="level='Base'">{{level}}</span>
<input ng-model="level" placeholder="Specify Level">

最理想的情况是,上面的示例会将“Base”作为范围中的默认值,但不会在输入中显示(因此占位符可见),直到输入变为脏,并重新定义了“level”值。我已经尝试过这些方面的东西,但无法实现我想要的东西:

<span ng-init="level='Base'">{{level}}</span>
<input ng-model="noop" ng-change="checkDirty()" name="lvl" id="lvl" placeholder="Specify Level">

// Controller code
$scope.checkDirty = function(){
  if ($scope.myform.lvl.$dirty) {
    angular.element("#lvl").attr("ng-model", "level")
  }
}

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

您不需要更改事件来检查表单是否脏。您可以直接在span元素中包含条件。

{{level ? level : 'Base'}}

<强>演示

&#13;
&#13;
var app = angular.module('app', []);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="app">
    <span>{{level ? level : 'Base'}}</span>
    <input ng-model="level"  name="lvl" id="lvl" placeholder="Enter level">

  </body>
&#13;
&#13;
&#13;