如果我使用
<input type="text" value="asdf">
然后我看到输入的默认值为asdf
但如果我这样做
<input data-ng-model="modelname" type="text" value="asdf">
然后我可以使用控制器中的modelname
,但默认值不再显示。我怎样才能使用这两种东西?
工具
答案 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">