Javascript 在标记中获取AngularJS对象属性名称

Javascript 在标记中获取AngularJS对象属性名称,javascript,angularjs,Javascript,Angularjs,假设我有一个对象: $scope.Golovkin = { id:12, Like:0, Dislike:0, url:"https://twitter.com/GGGBoxing" }; 在视图中,我有一个按钮: <input type="button" value="Like" ng-click="incrementLikes(Golovkin)" /> 如何将按钮的值替换为属性名$scope.Golovkin.Like作为字符串?您需要按钮上

假设我有一个对象:

$scope.Golovkin = {
    id:12,
    Like:0,
    Dislike:0,
    url:"https://twitter.com/GGGBoxing"
};
在视图中,我有一个按钮:

<input type="button" value="Like" ng-click="incrementLikes(Golovkin)" />

如何将按钮的值替换为属性名$scope.Golovkin.Like作为字符串?

您需要按钮上的名称Like。这是对象的第二个属性。您需要一个函数,通过该函数可以按索引返回属性名

<input type="button" ng-model="Golovkin.Like" ng-click="incrementLikes(Golovkin)" />
 $scope.getKeyName = function(obj, idx) {
            return Object.keys(obj)[idx];
    }
现在,使用此选项获取视图上的名称

<input type="button" value={{getKeyName(Golovkin, 1)}} ng-click="incrementLikes(Golovkin)" />

你需要像按钮上那样的名字。这是对象的第二个属性。您需要一个函数,通过该函数可以按索引返回属性名

 $scope.getKeyName = function(obj, idx) {
            return Object.keys(obj)[idx];
    }
现在,使用此选项获取视图上的名称

<input type="button" value={{getKeyName(Golovkin, 1)}} ng-click="incrementLikes(Golovkin)" />
例如,您可以使用: {{Golovkin.Like}}

下面是一个带有计数编号的示例:

编辑:

初始化控制器时,可以将属性名称保存在数组中:

$scope.buttonName = Object.keys($scope.Golovkin);
并将该名称显示为:

<button ng-click="incrementCount()">{{buttonName[1]}}</button>
请参见此图。

您可以使用,例如: {{Golovkin.Like}}

下面是一个带有计数编号的示例:

编辑:

初始化控制器时,可以将属性名称保存在数组中:

$scope.buttonName = Object.keys($scope.Golovkin);
并将该名称显示为:

<button ng-click="incrementCount()">{{buttonName[1]}}</button>
请参见此图。

您可以使用此方法

下面是一个代码片段:

var-app=angular.module'app',[]; 应用程序控制器'mainCtrl',函数$scope{ $scope.Golovkin={ id:12, 比如:0, 不喜欢:0, 网址:https://twitter.com/GGGBoxing }; $scope.getProperty=functionproperty{ return Object.getOwnPropertyNames$scope.Golovkin.findx=>x==property; } $scope.incrementLikes=functionGolovkin{ Golovkin.Like++; } }; -> 你可以使用这个方法

下面是一个代码片段:

var-app=angular.module'app',[]; 应用程序控制器'mainCtrl',函数$scope{ $scope.Golovkin={ id:12, 比如:0, 不喜欢:0, 网址:https://twitter.com/GGGBoxing }; $scope.getProperty=functionproperty{ return Object.getOwnPropertyNames$scope.Golovkin.findx=>x==property; } $scope.incrementLikes=functionGolovkin{ Golovkin.Like++; } }; ->

需要这样做的用例是什么?许多人没有成功地玩过这个游戏…底线是你需要概述你正在试图解决的更高级别的问题需要这样做的用例是什么?许多人没有成功地玩过这个游戏…底线是你需要概述你正在试图解决的更高级别的问题现在可以确定angular是否会在视图中计算此值,而不将对象分配给作用域。是的-控制器中可能需要$scope.Object=对象。实际上会抛出一个角度错误,不允许在视图中使用对象,即使作为作用域。try itAlso可能会由于对象没有顺序而遇到密钥顺序问题。这真的一点也不可靠,这会让我们重新思考他们在更高层次上的努力。尽管答案可以粗略地解决这个问题,op应该采用更好的设计。我现在明白了,但不太确定angular是否会在视图中评估这个问题,而不将对象分配给范围。是的-控制器中可能需要$scope.Object=对象。实际上抛出了一个角度错误,不允许在视图中使用对象,即使作为范围。try itAlso可能会由于对象没有顺序而遇到密钥顺序问题。这真的一点也不可靠,这会让我们重新思考他们在更高层次上的努力。尽管答案可以粗略地解决这个问题,op应该采用更好的设计。OP希望属性名称本身显示…而不是值。。。。如何获取属性名?你只是不能像属性名那样做。请查看我的更新,将属性名保留在数组中可以解决你的问题。这不是真的,因为对象没有顺序,所以你无法确定要使用什么索引。你知道该对象中有多少属性吗?应该是什么样的财产?例如,它将是一个property Tiger?我已经使用删除了这个相同的解决方案。OP希望属性名称本身显示…而不是值。。。。如何获取属性名?你只是不能像属性名那样做。请查看我的更新,将属性名保留在数组中可以解决你的问题。这不是真的,因为对象没有顺序,所以你无法确定要使用什么索引。你知道该对象中有多少属性吗?应该是什么样的财产?例如,它将是一只房地产老虎?这太过分了!如果OP知道术语“Like”能够传递给函数,为什么他们需要一个函数来复制它?因为这只是一个例子,函数的参数不应该是标准的。如果我们这样想,没有一个给定的答案是正确的,即使是查理H.的答案,因为你不知道搜索属性是否总是在第一位。整个问题可能是XY问题。但是你的也不再正确了
因为它需要知道他们想要输出的值,这太过分了!如果OP知道术语“Like”能够传递给函数,为什么他们需要一个函数来复制它?因为这只是一个例子,函数的参数不应该是标准的。如果我们这样想,没有一个给定的答案是正确的,即使是查理H.的答案,因为你不知道搜索属性是否总是在第一位。整个问题可能是XY问题。但是你的也不再正确,因为它需要知道他们想要输出的值。ng模型不绑定HTML控件的值吗?ng模型不绑定HTML控件的值吗?