如何以角度访问隐藏字段?我有一个应用程序,我想为列表中的每个项目提交一个表单。表单很简单 - 它有提交按钮和一个包含ID值的隐藏字段。但它不起作用。该值为空。
我更新了默认的角度示例以显示情况 - 待办事项文本位于隐藏字段中。
答案 0 :(得分:13)
如果您不想对javascript文件中的任何内容进行硬编码,可以通过AJAX加载,或者执行以下操作:
<input type="hidden" name="value" ng-init="model.value=1" value="1">
这样,您可以保持JS关闭的表单功能,并仍然使用AngularJS中的隐藏字段
答案 1 :(得分:8)
如果要将ng-repeat中的ID传递给代码,则不必使用隐藏字段。这是我做的:
例如,假设我正在循环播放一组电影,当您点击“阅读更多”链接时,它会将您的ID传递给您的JS代码:
<ul>
<li ng-repeat="movie in movies">
{{movie.id}} {{movie.title}} <a href="#" ng-click="movieDetails(movie)">read more</a>
</li>
</ul>
然后在您的JS代码中,您可以获得如下ID:
$scope.movieDetails = function (movie) {
var movieID = movie.id;
}
答案 2 :(得分:2)
在简单的小提琴中,可以通过使用ng-init或在控制器中设置初始值来解决问题。 value
属性不会影响ng模型。
http://jsfiddle.net/andytjoslin/DkMyP/2/
此外,您的初始示例(http://jsfiddle.net/tomasfejfar/yFrze/)适用于我在Chrome 15 / Windows 7上的当前状态。
答案 3 :(得分:2)
你可以这样做。
这是一个肮脏的把戏,但它的工作原理(像大多数肮脏的技巧;-)
您只需使用表单名称作为隐藏字段
并始终给表单id“form”
<!doctype html><html ng-app><head>
<script src="angular-1.0.1.min.js"></script>
<script>
function FormController($scope) {
$scope.processForm = function() {alert("processForm() called.");
$scope.formData.bar = "";
try {$scope.formData.bar = document.getElementById("form").name;}
catch(e) {alert(e.message);}
alert("foo="+$scope.formData.foo+ " bar="+$scope.formData.bar);
};
}
</script></head><body>
<div ng-controller="FormController">
<form name="YourHiddenValueHere" id="form">
<input type="text" ng-model="formData.foo" />
<button ng-click="processForm()"> SUBMIT </button>
</form>
</div></body></html>
这允许您为所有表格使用一个控制器并发送
他们到一个服务器脚本。
该剧本除了与之相区别
表单名称(formData.foo)并知道该怎么做
隐藏字段为此方案中的操作命名
Voila - 您有完整的申请表
您想要的许多表单和一个服务器脚本
和一个FormController为他们所有人。
答案 4 :(得分:1)
简单:
<input type="hidden" name="livraisonID" value="{{livraison.id}}"/>
有效!
答案 5 :(得分:0)
我必须纠正(改善)自己:
你可以更优雅地做到这一点:
<form>
<input type="text" ng-model="formData.foo" />
<input type="hidden" id="bar" value="YourHiddenValue" />
<button ng-click="processForm()"> SUBMIT </button>
</form>
然后在JavaScript控制器中:
$scope.formData.bar = "";
try {$scope.formData.bar = document.getElementById("bar").value;}
catch(e) {alert(e.message);}
alert("foo="+$scope.formData.foo+ " bar="+$scope.formData.bar);
所以你可以拥有任意数量的隐藏字段。
答案 6 :(得分:0)
使用ng-binding="{{employee.data}}"
。它会正常工作。