Question
我想知道 AngularJS 获取字段标签的“最佳实践”方法是什么。使用 jQuery,您只需使用“label for”查询进行查询,然后提取文本。虽然用 AngularJS 可以做到这一点,但总感觉有些不对劲。
假设您的 HTML 中有类似这样的内容:
<form name="MyForm" ng-controller="Ctrl">
<label for="MyField">My spoon is too big:</label>
<input type="text" size="40" id="MyField" ng-model="myField" />
<br /><br />
You entered {{ myField }} for {{ myField.label }}
</form>
控制器内部非常简单:
$scope.myField = 'I am a banana.';
基本上我想填充myField.label
在输出中带有“我的勺子太大了。"
我现在在做什么
我现在所做的就是执行一个查询,以类似于 jQuery 方法的方式提取数据($("label[for='MyField']")
)。然后,如果不存在,我只是拉占位符文本。它有效,但似乎有点开销。
我正在努力实现的目标
我想要一些自定义表单验证,并且我想在消息中包含标签。我只需要拉出标签文本,这样我就可以非常通用地编写它,然后不必担心人们稍后在游戏中动态切换 i18n 数据。
Fiddle
根据建议的解决方案:https://jsfiddle.net/rcy63v7t/7/ https://jsfiddle.net/rcy63v7t/7/
您将 HTML 更改为以下内容:
<label for="MyField">{{ myFieldLabel }}</label>
<input type="text" size="40" id="MyField" ng-model="myField" />
以及你的 JS 如下:
$scope.myFieldLabel = 'My spoon is too big:';
然后,您可以轻松获取/设置其值:
if ($scope.myFieldLabel === 'My spoon is too big:') {
$scope.myFieldLabel = 'New label:';
}
请注意,新的 AngularJS 最佳实践要求始终在字段引用中使用“点”。如果你这样做的话,它会非常适合这里:
<label for="MyField">{{ myField.label }}</label>
<input type="text" size="40" id="MyField" ng-model="myField.value" />
and JS:
$scope.myField = {
value: '',
label: 'My spoon is too big:'
};
然后您就可以随时轻松访问$scope.myField.label
and $scope.myField.value
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)