我正在使用 Trigger.io 为 Android 和 iOS 构建一个移动应用程序。不幸的是,在 Android 上,通过 webview 组件的日期和时间文本字段不使用本机日期选择器和时间选择器。Trigger.io 有一个 API 调用可以让您使用本机控件,但我很难弄清楚如何让它工作。
我主要使用我不太熟悉的 Angular.js 指令来工作。这是我的代码:
if (forge.is.android())
{
app.directive("ngNative", function() {
return {
restrict: "A",
require: "?ngModel",
link: function(scope, elm, attrs, ngModel) {
elm.on('blur', function() {
scope.$apply(function() {
ngModel.$setViewValue(elm.val());
});
});
ngModel.$render = function() {
forge.logging.info("Render value: " + ngModel.$viewValue);
elm.val(ngModel.$viewValue || '');
};
ngModel.$setViewValue(elm.val());
attrs.$observe('id', function(id) {
forge.logging.info('Trying to enhance #' + id);
forge.ui.enhanceInput('#' + id);
});
}
};
});
}
这个想法是使用该代码,我应该能够使用 ngNative 属性标记控件,并且 Angular 将使用输入的 ID 调用 forge.ui.enhanceInput API。
无论如何,这主要是有效的。但是,$render 函数似乎没有被调用,我不知道为什么。因此,当输入控件被渲染时,它不会填充模型的数据。但是,当我在字段中键入内容时,它会更新模型的数据。
有没有人已经使用指令或其他方式解决了这个问题?任何帮助将不胜感激。
谢谢。