我有更新功能和许多输入框。每个输入都附加一个ng-blur
,以便在光标离开框时调用更新函数。
$scope.update = function(data) {
console.log(data); //outputs value in the textbox
//how can I output/access the key?
}
name
的输入如下所示:
<input type="text" ng-model="user.name" ng-blur="update(user.name)"/>
因为我需要能够以{"name" : "bob smith"}
形式发布JSON对象,所以生成对象“键”的好方法是记住它会因使用的输入框而有所不同当时?
答案 0 :(得分:2)
编辑↓
我已经制作了这个jsfiddle来说明一种更干净利落的方式。这将更容易扩展:http://jsfiddle.net/kuzyn/k5bh0fq4/5/
编辑↑
为什么不简单地传递第二个字符串参数?这不是一种花哨的方式,但它会起作用:
diff --git a/Gemfile.lock b/Gemfile.lock
index b85dabe..a909ee0 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -57,6 +57,7 @@ GEM
code_metrics (0.1.3)
coderay (1.1.0)
colored (1.2)
+ colorize (0.7.7)
concord (0.1.5)
adamantium (~> 0.2.0)
equalizer (~> 0.0.9)
@@ -215,7 +216,8 @@ GEM
slop (3.6.0)
spoon (0.0.4)
ffi
- sshkit (1.8.1)
+ sshkit (1.7.1)
+ colorize (>= 0.7.0)
net-scp (>= 1.1.2)
net-ssh (>= 2.8.0)
terminal-table (1.5.2)
和
<input type="text" ng-model="user.name" ng-blur="update(user.name, 'name')"/>
答案 1 :(得分:0)
它可能需要更多工作,但它的可扩展性更高。您可以使用ng-form
并命名表单输入。通过命名表单和输入,您将通过$scope[form-name]
在范围上创建表单参考。然后,该表单中的每个命名输入都通过$scope[form-name][input-name]
设置输入引用。
我在coffeescript中对此进行编码(为了保持理智,对不起)
<强>形式强>
<form name="myForm">
<input name="name" ng-model="user.name" ng-blur="update(user)"/>
<input name="email" ng-model="user.email" ng-blur="update(user)"/>
<input name="other" ng-model="user.other" ng-blur="update(user)"/>
</form>
更新&amp;保存功能
# key is what changed in case you need to do something special on the put call to server
$scope.save = (data, key)->
# pseudo-code
$scope.update = (data)->
for name, input of $scope.myForm
if input?.$dirty
$scope.save data, name
break