一尘不染

默认值的Angular js init ng-model

angularjs

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

例:

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

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

$scope.card = {
  description: $('myinput').val()
}

阅读 228

收藏
2020-07-04

共1个答案

一尘不染

这是新的Angular应用程序中的常见错误。如果可以避免,您不想将值写入服务器上的HTML。如果确实如此,那么如果您可以摆脱让服务器完全呈现HTML的局面,那就更好了。

理想情况下,您要发送Angular HTML模板,然后通过JSON中的$ http下拉值并将其放在您的范围内。

因此,请尽可能执行以下操作:

app.controller('MyController', function($scope, $http) {
    $http.get('/getCardInfo.php', function(data) {
       $scope.card = data;
    });
});

<input type="text" ng-model="card.description" />

如果绝对必须从服务器将值呈现到HTML中,则可以将它们放在全局变量中,并使用$ window访问它们:

在页面标题中,您应该写出:

<head>
   <script>
       window.card = { description: 'foo' };
   </script>
</head>

然后,在您的控制器中,您将像这样:

app.controller('MyController', function($scope, $window) {
   $scope.card = $window.card;
});

希望对您有所帮助。

2020-07-04