如何访问 Angular 中的隐藏字段?我有一个应用程序,我想为列表中的每个项目提交一个表单。表单很简单——它有提交按钮和一个包含 ID 值的隐藏字段。但它不起作用。该值为空。
我更新了默认的角度示例以显示情况 - 待办事项文本位于隐藏字段中。
如何访问 Angular 中的隐藏字段?我有一个应用程序,我想为列表中的每个项目提交一个表单。表单很简单——它有提交按钮和一个包含 ID 值的隐藏字段。但它不起作用。该值为空。
我更新了默认的角度示例以显示情况 - 待办事项文本位于隐藏字段中。
如果您不想在 javascript 文件中硬编码任何内容,您可以通过 AJAX 加载它,或者执行以下操作:
<input type="hidden" name="value" ng-init="model.value=1" value="1">
这样,您可以在关闭 JS 的情况下保持表单功能,并且仍然使用 AngularJS 中的隐藏字段
如果您想将 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;
}
在您更简单的小提琴中,可以通过使用 ng-init 或在控制器中设置初始值来解决问题。该value
属性不会影响 ng-model。
http://jsfiddle.net/andytjoslin/DkMyP/2/
此外,您的初始示例 (http://jsfiddle.net/tomasfejfar/yFrze/) 在 Chrome 15/Windows 7 上的当前状态下适用于我。
你可以做这样的事情。
这是一个肮脏的把戏,但它可以工作(就像大多数肮脏的把戏一样;-)
你只需使用表单名称作为你的隐藏字段
并始终为表单提供 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) 进行区分并知道要做什么。
隐藏字段命名此场景中的操作。
瞧——您有一个完整的应用程序,其中包含
您想要的任意数量的表单以及一个服务器脚本
和一个用于所有表单的 FormController。
更简单:
<input type="hidden" name="livraisonID" value="{{livraison.id}}"/>
有用!
我必须纠正(改进)自己:
你可以做得更优雅:
<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);
因此,您可以拥有任意数量的隐藏字段。
使用ng-binding="{{employee.data}}"
. 它会正常工作。