获取ng-model输入中的默认数据

时间:2014-05-30 18:33:48

标签: javascript angularjs

HTML

<div>
  <input ng-model="tripsheet.tripsheet_num" type="text"> 
</div>

JS

$scope.getTotalTripsheets = function() 
 {
  return $scope.tripsheets.length;
 };

我希望上面的数据(getTotalTripsheets)能够输入标签中的默认输入,在上面的代码中,我从数据库表中获取长度并尝试将其作为输入字段中的默认数据。

我尝试过这样的事情(如下),它不起作用,我该怎么办呢?

$scope.tripsheet = function()
 {
  $scope.tripsheet_num = !$scope.getTotalTripsheets;
 };

2 个答案:

答案 0 :(得分:0)

你正在输入一个tripheet.tripsheet_num模型,这意味着在$ scope上会有一个名为tripsheet.tripsheet_num的属性(我想,不确定因为它会实际做什么。)< / p>

但是我确实知道,当你将tripheet num作为一个函数时,它会覆盖之前的任何内容,你应该丢失.tripshee_num属性。你的结构应该更像这样。

$scope.tripsheet = {}
$scope.tripsheet.tripsheet_num = "default value";

如果tripheet是一个数组,那么将输入的模型更改为&#34; tripsheetLength&#34;并将代码更改为此。

<input ng-model="tripsheetLength" type="text"> 
$scope.tripsheets = ['info1', 'info2']
$scope.tripsheetLength = $scope.tripsheets.length; // length here is 2

答案 1 :(得分:0)

如果您只想要一次/单向绑定到Array的长度,请使用ng-value代替ng-model

<input ng-value="tripsheets.length" type="text">

如果您的双向绑定可以从默认值更改:

$scope.tripsheet = {
  tripsheet_num: $scope.tripsheets.length
};
<input ng-model="tripsheet.tripsheet_num" type="text">

plunker中的示例:http://plnkr.co/edit/UM4lyGZSxB1mEcpy9CqJ?p=preview

最后,听起来您可能正在远程调用数据库,因此您可以使用以下策略:

$scope.tripsheet = {
  $resolved: false,
  tripsheet_num: null
};

远程调用成功后,将$resolved设置为true并设置tripsheet_num的值。在HTML中你可以这样做:

<input ng-disabled="!tripsheet.$resolved" ng-model="tripsheet.tripsheet_num" type="text">

解决关于plunker的示例:http://plnkr.co/edit/q2Ua8KGqWr6HDphe92q0?p=preview