1

我正在使用 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 函数似乎没有被调用,我不知道为什么。因此,当输入控件被渲染时,它不会填充模型的数据。但是,当我在字段中键入内容时,它会更新模型的数据。

有没有人已经使用指令或其他方式解决了这个问题?任何帮助将不胜感激。

谢谢。

4

0 回答 0