AngularJS输入ng-model /默认值冲突

时间:2015-04-16 21:51:24

标签: angularjs ionic-framework

如果我使用

<input type="text" value="asdf">

然后我看到输入的默认值为asdf

但如果我这样做

<input data-ng-model="modelname" type="text" value="asdf">

然后我可以使用控制器中的modelname,但默认值不再显示。我怎样才能使用这两种东西?

工具

  • 离子
  • AngularJS

4 个答案:

答案 0 :(得分:6)

通常,您可以在控制器内设置modelname的默认值。有可能作弊并使用&nbsp; ngInit&#39;尽管有角度的文档不鼓励在ngRepeat之外使用它。

<input data-ng-model="modelname" data-ng-init="modelname = 'asdf'" type="text">

angular docs的相关声明

&#34; ngInit的唯一合适用途是用于别名ngRepeat的特殊属性,如下面的演示所示。除了这种情况,您应该使用控制器而不是ngInit来初始化范围上的值。&#34;

答案 1 :(得分:1)

使用此

$scope.foo={};
$scope.foo.modelname = "asdf";

而不是

$scope.modelname = "asdf"

答案 2 :(得分:0)

在控制器中设置$ scope.modelname =“asdf”。您不需要value属性。

答案 3 :(得分:0)

不是设置绑定到视图中模型的元素的默认值,而是强烈建议在控制器上下文中设置这些默认值。

例如,<input ng-model="yourModelName" type="text">需要控制器中名为$scope.yourModelName = 'whateveryouwant'的合作伙伴。

一旦输入DOM元素加载,它将检查包含该模型的控制器并将其填入。这就是为什么双向数据绑定现在很好的原因。在实际的实例中,您可以根据API命中的返回来填充包含用户详细信息的表单,而不进行任何映射。

只是为了向你显示权力..这会返回数据并使用名为myUser

的对象将其绑定到范围
somethingService.getSomething(id).then(function(res) {
    $scope.myUser = res.data;
}

您现在可以初始化视图中myUser对象可能包含的字段,例如..

<input type="text" ng-model="myUser.name">
<input type="text" ng-model="myUser.address">
<input type="text" ng-model="myUser.gender">