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 中不起作用
Ionic3 - 离子元素/组件在 innerHTML 中不起作用