猿问

默认值的Angular js init ng-model

假设您有一个具有从数据库加载的值的表单。您如何初始化ng-model?


例:


<input name="card[description]" ng-model="card.description" value="Visa-4242">

在我的控制器中,$ scope.card最初是未定义的。除了做这样的事情,还有别的办法吗?


$scope.card = {

  description: $('myinput').val()

}


慕后森
浏览 926回答 3
3回答

叮当猫咪

这是新的Angular应用程序中的常见错误。如果可以避免,您不想将值写入服务器上的HTML。如果确实如此,如果您可以摆脱让服务器完全呈现HTML的局面,那就更好了。理想情况下,您要发送Angular HTML模板,然后通过JSON中的$ http下拉值并将其放在您的范围内。因此,请尽可能执行以下操作:app.controller('MyController', function($scope, $http) {&nbsp; &nbsp; $http.get('/getCardInfo.php', function(data) {&nbsp; &nbsp; &nbsp; &nbsp;$scope.card = data;&nbsp; &nbsp; });});<input type="text" ng-model="card.description" />如果绝对必须从服务器将值呈现到HTML中,则可以将它们放在全局变量中,并使用$ window访问它们:在页面标题中,您应该写出:<head>&nbsp; &nbsp;<script>&nbsp; &nbsp; &nbsp; &nbsp;window.card = { description: 'foo' };&nbsp; &nbsp;</script></head>然后,在您的控制器中,您将像这样:app.controller('MyController', function($scope, $window) {&nbsp; &nbsp;$scope.card = $window.card;});希望对您有所帮助。

慕工程0101907

如果您无法重做应用程序以执行@blesh的建议(使用$ http或$ resource下拉JSON数据并填充$ scope),则可以使用ng-init代替:<input name="card[description]" ng-model="card.description" ng-init="card.description='Visa-4242'">
随时随地看视频慕课网APP

相关分类

AngularJS
我要回答