也许这是一个菜鸟错误,但我似乎无法访问$scope.model
's$ngModelController
所以我可以从中获取$viewValue
。
我有一个没有表单的输入(我使用 ui-mask 指令):
<input type="text" ng-model="inicio" name="inicio" ui-mask="99/99/9999">
// inside my controller
$scope.inicio = dateFilter((new Date).getTime(), 'dd/MM/yyyy');
ui-mask 将 $modelValue 设置为与 $viewValue 不同的值,从而难以将格式化数据发送到服务器。当$scope.inicio
模型更改时,该值是不带斜线的日期,例如01012014
. 因此,我需要能够获取该输入的控制器,但不必将其包装在表单中,并且必须使用$scope.myForm.inicio.$viewValue
. 这一定是可能的...
我知道我可以做的事情,但看起来很老套,必须有一个更简单的方法:
- 将元素放在表单中并通过它访问它
$scope.myForm.input.$viewValue
- 使用 jQuery 获取元素数据
$('input[name="inicio"]').data('$ngModelController');
- 使用获取元素
angular.element('input[name="inicio"]').controller('ngModel');
- 创建一个指令,将其放入输入中,并用它更新我的范围模型
app.directive('viewValue', function(){
return {
priority: 10,
require: 'ngModel',
link: function(scope, element, attrs, controller){
scope.$watch(attrs.viewValue, function(newValue, oldValue){
if (newValue !== oldValue){
scope[attrs.viewValue] = controller.$viewValue;
}
});
}
}
});
<input type="text" ui-mask="99/99/9999" ng-model="inicio" view-value="inicio">