AngularJs中的隐藏字段

时间:2012-06-24 10:50:55

标签: javascript angularjs

如何以角度访问隐藏字段?我有一个应用程序,我想为列表中的每个项目提交一个表单。表单很简单 - 它有提交按钮和一个包含ID值的隐藏字段。但它不起作用。该值为空。

我更新了默认的角度示例以显示情况 - 待办事项文本位于隐藏字段中。

http://jsfiddle.net/tomasfejfar/yFrze/

7 个答案:

答案 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}}"。它会正常工作。