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 関数が呼び出されていないようで、その理由はわかりません。そのため、入力コントロールがレンダリングされるときに、モデルのデータが取り込まれません。ただし、フィールドに何かを入力すると、モデルのデータが更新されます。
ディレクティブやその他の手段を使用して、この問題を解決した人はいますか? どんな助けでも大歓迎です。
ありがとう。