Ionic 功能在 Ionic View 中不起作用但在 Web 上起作用的潜在原因

Posted

技术标签:

【中文标题】Ionic 功能在 Ionic View 中不起作用但在 Web 上起作用的潜在原因【英文标题】:Potential causes of Ionic function not working in Ionic View, but working on web 【发布时间】:2015-08-17 21:07:30 【问题描述】:

我正在使用 Ionic 构建一个送餐应用。我在让应用程序在移动设备上运行地址创建步骤时遇到问题。创建帐户后,用户必须创建一个送货地址,此时应用会确定要使用的送货地点。

在 Chrome (ionic serve) 和 ios 模拟器 (ionic run ios -l -c -s) 中可以创建地址。

但是,一旦我将应用上传到我的 Ionic View iOS 应用进行测试,它就会卡在地址创建步骤。

但在地址创建步骤,Ionic 加载轮启动但它并没有消失,也没有到菜单的状态转换。

这是控制器中的实现。

Address.create($scope.newAddress, $scope.user)
.then(function(response)  // never gets a response back in Ionic View
    console.log("address created");
    user.save(null,
         success: function(user) 
            // success callback
        , error: function(error) 
            // throw error
        
        );
    , function(error) 
        // throw error
);

我实现的Address.create() 方法相当冗长:

...
.factory('Address', ['$http', '$q', 'PARSE_HEADERS'
function ($http, $q, PARSE_HEADERS) 

    return 
        create: function(data, userID) 
            var deferred = $q.defer();
            var zipArray = ['1111','22222','33333'];
            var inZone = false;
            var restaurantCoords = 
                latitude: 11.11111, longitude: 22.22222
            ;
            for (var i=0, bLen=zip***lyn.length; i<bLen; i++) 
                if(data.zipCode==zipArray[i]) 
                    inZone = true;
                
            
            if (inZone == true )  // valid zip
                function onSuccess(coords) 
                    var limit = 3041.66;
                    var meters = getDistance(coords, restaurantCoords);
                    if (meters < limit) 
                        $http.post('https://api.parse.com/1/classes/Address', data, 
                            headers: PARSE_HEADERS
                        )
                        .success(function(addressData) 
                            deferred.resolve(addressData);
                        )
                        .error(function(error, addressData) 
                            deferred.reject(error);
                        );
                    
                    function onError() 
                        deferred.reject("Unable to Geocode the coordinates");
                    
                    // GET COORDS
                    navigator.geocoder.geocodeString(onSuccess, onError, data.address1 + ',' + data.zipCode);
                
            
            return deferred.promise;
        ]);

我已经删除了所有我认为有效的代码。

所以这个问题的有效答案可能有多种形式:

    我会接受一个提供调试应用程序的体面方式的答案IN Ionic View。 或者,如果有人可以回答为什么它可能在浏览器和 iOS 模拟器中运行,而不是 iOS 本身,那将更加感激。

【问题讨论】:

Ionic 视图还不支持所有插件。请查看此link 以获取支持的插件列表。 谢谢!很高兴知道这一点。所以我可以放心地假设 iOS 模拟器是我进行应用测试的最佳选择? 设备总是更好(第一个选项)。如果您有 ios 设备和苹果开发者帐户。您可以使用设备 ID 创建和配置所需的证书,并使用“ionic run ios”运行应用程序。第二种选择是 iOS 模拟器。即使您使用模拟器进行整个开发,也始终建议在启动应用程序之前在设备中进行测试。希望这会有所帮助。 太好了,感谢您的帮助!请务必提交答案,以便我给您积分。 【参考方案1】:

Ionic 视图还不支持所有插件。请查看link 以获取支持的插件列表。

设备总是更好(第一个选项)。如果您有 ios 设备和苹果开发者帐户。您可以使用设备 ID 创建和配置所需的证书,并使用“ionic run ios”运行应用程序。第二种选择是 iOS 模拟器。您可以将模拟器用于整个应用程序,但很少有任务需要设备。

即使您在整个开发过程中使用模拟器,也始终建议在启动应用程序之前在设备中进行测试。

【讨论】:

以上是关于Ionic 功能在 Ionic View 中不起作用但在 Web 上起作用的潜在原因的主要内容,如果未能解决你的问题,请参考以下文章

Ionic 3 本地通知 LED/声音在 Android 中不起作用

为啥添加自定义 SASS 变量在 Ionic 中不起作用?

Ionic3 - 离子元素/组件在 innerHTML 中不起作用

填充顶部在 ionic 3 中不起作用

ionic2 WebSocket 在 Android 应用程序中不起作用

谷歌地图在 Ionic 2 应用程序中不起作用