1

Trigger.io を使用して、Android および iOS 用のモバイル アプリを構築しています。残念ながら、Android では、webview コンポーネントを介した日付と時刻のテキスト フィールドは、ネイティブの datepicker と timepicker を使用しません。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