也许这是一个新手的错误,但我似乎无法访问$scope.model
$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
$('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">
答案 0 :(得分:4)
我喜欢指令选择。基本上ui-mask
指令没有做你想要的,所以你也可以编写自己的指令。
您不必将inicio
传递给view-value
指令。而是将您自己的解析器添加到ngModelCtrl.$parsers
。这是一个例子:https://stackoverflow.com/a/15556249/215945