边缘案例使用angularjs形式的ng模型
Edge-case using ng-model in angularjs forms
我正在处理一个令人讨厌的边缘案例,希望能得到一些帮助。
情况:
- 我正在开发一款棱角分明的应用程序,它是捐赠平台的"主题";捐赠平台允许我们托管主题文件(图像、样式表、javascript、html标记等)
- 该平台使用液体模板来允许使用CSRF令牌以及防止一些XSS肮脏
- 角度的插值提供程序被更改为
// some.expression //
,这样它就不会干扰液体支架{{}}
- 所以:以99:1的比例混合html/angular和一些液体
- 使用角度1.2.27
问题:
-
如果用户提交了一个表单,但其中有错误,liquid标签还使我们能够从服务器上读取数据。例如:当用户输入卡号但忘记了一个字段时,我们可以使用像
{{ user.first_name }}
这样的liquid标记来安全地访问该信息,并在表单重新加载时填充字段的值属性。这样,用户就不会面对顶部有错误的空白表单。 -
例如:
<input ng-blur="validateFName=true" ng-required="true" placeholder="First name" type="text" name="donation[first_name]" ng-model="donation.first_name" value="'{{ donation.first_name }}'">
-
变为:
<input ng-blur="validateFName=true" ng-required="true" placeholder="First name" type="text" name="donation[first_name]" ng-model="donation.first_name" value="John">
值attr确实被填充,angular只是忽略它(当然,这是预期用途) -
但是,由于
ng-model
属性的工作方式,即使表单元素填充了它们的value
属性,ng模型也会忽略它,并且字段实际上是空白的(无论如何,对用户来说)
那么:有办法解决这个问题吗?从本质上讲,我正在寻找一种方法,用它们各自字段的value属性填充ng-model
,或者让ng-model
确认value
属性。我已经研究了ng-bind、-init、-value等,但大多数都是为了更"正常"地使用angular。是的,我知道这不是利用angular的最佳方式,但在这种情况下,我受到我的要求的约束。如有任何帮助,我们将不胜感激。谢谢
我会尝试创建一个指令来监视value属性并在更改时更新ng模型。
.directive('value', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attr, ctrl) {
attr.$observe('value', function(val) {
ctrl.$setViewValue(val);
}
}
}
})
另一个选项可能是在Javascript中的模型端而不是模板上填充数据?
代替
<input ng-blur="validateFName=true"
ng-required="true"
placeholder="First name"
type="text"
name="donation[first_name]"
ng-model="donation.first_name"
value="'{{ donation.first_name }}'">
如果你的控制器里有怎么办
...
$scope.donation.first_name = "'{{ donation.first_name }}'";
...
- 角度无线电按钮ng模型不起作用
- ng模型内的ng重复的ng重复开始
- 将输入值设置为ng模型属性[Angular]时出现问题
- 自定义指令中的AngularJS ng模型
- 如何为动态创建的文本区域中输入的值更新ng模型
- ng重复中的ng模型-初始化唯一作用域属性
- ng重复变量到ng模型
- 初始化ng模型时,Angular ui选择占位符不起作用
- 角度去抖动(ng模型选项)不起作用
- 即使 ng 模型有值,也使输入字段为空
- 选择框中带有关联的ng模型,选项中带有ng重复
- 为什么我的指令(使用链接)没有出现,并允许ng模型看到它
- AngularJS+IE 11+聚合物=ng模型未更新
- ng模型在$(element).clone()之后不起作用
- 为什么ng选项指令需要ng模型
- 使用引导时间选取器时,没有更新数据ng模型值
- 具有ng重复的动态ng模型
- 有没有一种方法可以在设计模式下将ng模型或工厂绑定到iframe
- 删除ng模型中的ng模型输入值
- Angular.js默认选中不'不适用于ng模型