Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何将变量动态绑定到输入_Angularjs - Fatal编程技术网

Angularjs 如何将变量动态绑定到输入

Angularjs 如何将变量动态绑定到输入,angularjs,Angularjs,我在控制器中有一个对象,我从http GET请求中获取该对象的值: $scope.myObj = { id1: "1", id2: "5", id3: "", id4: "" }; 它可以有任意数量的字段(id..)和任意值。但是如果id-k不是空的,那么id-n中的n

我在控制器中有一个对象,我从http GET请求中获取该对象的值:

$scope.myObj = {

      id1: "1",
      id2: "5",
      id3: "",
      id4: ""
    };
它可以有任意数量的字段(
id..
)和任意值。但是如果
id-k
不是空的,那么
id-n
中的
n
也不是空的

我需要绑定到对象的
INPUT
last not empty字段。最好的方法是什么

这是一个

更新:此对象是分类器中的一个位置。 在我的示例中,
ID
的位置是
1.5
。我需要只允许编辑分类中的最后一个位置。用户可以将
5
更改为
6
7
或任何其他内容,但不能更改
1

如果对象是

$scope.myObj = {

          id1: "2",
          id2: "5",
          id3: "4",
          id4: "8"
        };

分类为
2.5.4.8
,用户必须只能编辑最后一段-
8

控制器

...
$scope.myObj = {
  id1: "1",
  id2: "5",
  id3: "6",
  id4: ""
};

$scope.segments = Object.keys($scope.myObj)
  .filter(function(key) {
    return $scope.myObj[key];
  })
  .sort(function(a, b){
    return Number(a.replace('id', '')) - Number(b.replace('id', ''));
  });
 ...
HTML

<span ng-repeat="segment in segments">
   <span ng-if="!$last">{{ myObj[segment] }}</span>
   <input ng-if="$last" ng-model="myObj[segment]">
</span>

<p>{{ myObj }}</p>
注意-您不能依赖键的顺序,因此您不能假设最后一个键是最大的键


Plnkr-

我需要绑定到
输入

看起来,你拥有的是一个对象列表,列表中的元素数量可能会有所不同。。您希望将所有这些绑定到

如果是这样,那么这就可以完成工作:

<div ng-init="tempName = key" ng-repeat="(key, value) in myObj">
    <label for="{{key}}" >{{key.toUpperCase()}}</label>
    <input name="{{key}}" id="{{key}}" type="text" ng-model="myObj[tempName]" />
</div>

{{key.toUpperCase()}}
这是一个很棒的例子

编辑:


要忽略空字段:

但是当我在
输入中更改
myLast
时,
myObj.id2
将保持不变。我更改了你的代码来显示这个。。我似乎误解了这个问题。很抱歉是否或似乎更接近您所寻找的?我不太明白为什么我们要换最后一把钥匙。我以为更新是由值驱动的。不,对不起。我不知道如何更好地解释这一点,但我只想编辑对象的最后一个非空字段。你所有的例子都绑定了新变量,但我的没有。我可以使用您的第一个示例并添加
$watch
来绑定两个变量-您的新
myLast
myObj
,但我正在寻找更好的解决方案。我已经更新了我的问题,以解释我的代码的用途。这个如何?(注意,您可以扩展myObj以包含任意多个键)不,我不需要把它们都绑起来。我需要将对象的最后一个非空字段绑定到
INPUT
。因此您希望忽略空字段??empty。也不是空的。我需要绑定到一个
输入
一个
变量
。看看我的代码好的。因此,您需要绑定空字段前面的一个,并且只绑定一个,2。还有,如果有多个空字段呢?然后怎么办呢
但是如果id-k不是空的,那么所有的id-n其中n
。所以我总是有:
n1,n2,n3,n-k,….
。我需要绑定
n-k
。可能有许多空字段。但在空字段之前,我只有一个
最后一个字段。
<div ng-init="tempName = key" ng-repeat="(key, value) in myObj">
    <label for="{{key}}" >{{key.toUpperCase()}}</label>
    <input name="{{key}}" id="{{key}}" type="text" ng-model="myObj[tempName]" />
</div>