标签: titanium

在javascript中链接异步调用的正确方法是什么?

我正在尝试找到创建异步调用的最佳方法,当每个调用依赖于先前的调用已完成.目前我通过递归调用定义的过程函数来链接方法,如下所示.

这就是我目前正在做的事情.

var syncProduct = (function() {
    var done, log;
    var IN_CAT = 1, IN_TITLES = 2, IN_BINS = 3;
    var state = IN_CAT;
    var processNext = function(data) {
        switch(state) {
            case IN_CAT:
                SVC.sendJsonRequest(url("/api/lineplan/categories"), processNext);
                state = IN_TITLES;
                break;
            case IN_TITLES:
                log((data ? data.length : "No") + " categories retrieved!");
                SVC.sendJsonRequest(url("/api/lineplan/titles"), processNext);
                state = IN_BINS;
                break;
            case IN_BINS:
                log((data ? data.length : "No") + " titles retrieved!");
                SVC.sendJsonRequest(url("/api/lineplan/bins"), processNext);
                state = IN_MAJOR;
                break;
            default:
                log((data ? data.length : "No") + …
Run Code Online (Sandbox Code Playgroud)

javascript titanium serverside-javascript node.js titanium-mobile

16
推荐指数
1
解决办法
1万
查看次数

使用JavaScript检查本地文件是否存在

我想检查HTML文件所在的本地文件是否存在.它必须是JavaScript.永远不会禁用JavaScript.jQuery不好但可以做到.

顺便说一句,我正在为Mac制作一个钛应用程序,所以我正在寻找一种方法来保护我的文件免受点击"显示包内容"的人的影响.

html javascript security titanium local-files

15
推荐指数
4
解决办法
11万
查看次数

Android的外部SDCard文件路径

Android设备上外部SDCard的文件路径始终是"/ storage/extSdCard"吗?如果没有,有多少变化?

我需要它来为我的应用程序测试外部 SD卡的可用性.

我正在使用Titanium,它有一个方法Titanium.Filesystem.isExternalStoragePresent() 但它总是返回true,即使没有安装外部SDCard.

我认为它在本地存储中检测到SDCard因此返回true.但我真正想要的是检测物理SD卡是否已安装.

我可以通过单独检测文件"/ storage/extSdCard"的存在来做到这一点吗?

谢谢.

android external sd-card titanium android-sdcard

15
推荐指数
3
解决办法
6万
查看次数

RhoMobile Suite vs. Titanium v​​s. Xamarin vs. PhoneGap vs. Telerik Platform vs. Codename One

我和许多其他人一样,希望进军移动应用程序开发.我熟悉HTML5,CSS3,JavaScript,PHP,Ruby,.NET,但不熟悉Java或Objective-C.老实说,我不太可能成为一名移动开发人员大师,而我将开发的应用程序不太可能将Hybrid的极限推到极限,以至于无论如何我都应该去原生.所以我面临的挑战是获得足够的知识,让自己与主流的混合开发平台保持一致 - 知道我根据自己的要求做出了正确的决定.

我一直在阅读有关SO的类似帖子,并研究当前流行的Hybrid Mobile应用程序开发'解决方案',包括:

Xamarin Titanium Rhomobile PhoneGap Telerik平台

我得出的结论是,与之相关的决定并非如此简单.事实上,我开始时并没有比做出决定更接近决定.因此,我转向社区根据我的具体标准推荐哪些选项(我认为这反映了大多数自雇的开发人员在逐个项目的基础上工作,而不是一个能够为许可提供资金的大型企业开发团队成本等)

我将构建的应用程序将需要Android和iPhone版本,并且应该能够访问基本的核心电话功能,包括:摄像头,加速度计,地理位置,警报,本地存储,G传感器等,但不多.

所以,这篇文章不是主观的"哪一个最好?",而是根据以下要求寻找建议:

  1. 免费(优先),但至少对小男人负担得起:1a.可负担的每月订阅(如果必须的话)1b.在分发我的应用程序时没有隐藏的许可证费用 - 这是一个巨大的问题.

  2. 开发平台应该安装在Windows和Mac上(所以我可以自己为平台构建)2a.或者,任何集成的在线构建服务都应该是可承受的

  3. 环境应该很容易安装和配置(有这样的解决方案吗?几乎所有我尝试过的东西在查找参考文件,版本,启动模拟器等时都会遇到某种问题)

作为一个.NET MVC开发人员,Xamarin似乎是显而易见的选择,但是入门者无法调用第三方库 - 我想我需要这个 - 而每个平台每年只需299美元的"Indie",我不确定它会不会提供所需的所有功能.每个平台每年1899美元的企业版远远超出预算.

Rhomobile套件及其MVC Ruby方法似乎非常适合我,但文档需要注意(过时)并且似乎在许可方面存在大量的怀疑.我找不到明确的答案,他们没有回应简单的请求.我发现:"使用RhoElements确实需要许可证密钥,只使用非企业功能(即Rhodes应用程序)只需从build.yml中删除app_type:rhoelements." - 当然很可能我需要RhoElements!看看应用程序许可(在docs.rhomobile.com网站上),似乎你可以从摩托罗拉解决方案(或其他一些经销商)获得它们,但通常我找不到价格.这让我很担心 - 当我分发到应用程序商店时,我可以预见我会收到10,000美元的费用.

Titanium在许可方面也存在模糊之处.一些人声称他们被英国经销商追讨5000美元的许可证,其他人认为这是完全错误的,并且没有许可证费用.再一次,不知道......

相比之下,PhoneGap似乎确实勾选了方框,我没有看到对许可的担忧,但与其他解决方案相比,它需要更多的手动流程和未完成的结果 - 尽管这可能更多地与应用程序有关我已经在示例中看到而不是平台的能力.

Telerik平台看起来不错,但我怀疑以每月39美元的当前价格(以"对于修补匠和业余爱好者来说是理想的")的"开发者"产品是足够的,所以我会看到79美元的承诺一个月前付了一年 - 哎哟!我也不确定这笔费用是否涵盖了完整申请的所有许可(我希望如此).

由于我的关键标准之一是易于安装,配置和构建,我倾向于Rhomobile或Telerik,这取决于我作为构建和提交这些应用程序的开发人员的最终成本.

所有事情都被认为是我在正确的轨道上或仍然非常不知情?

非常感谢.

titanium rhomobile cordova xamarin telerik-appbuilder

15
推荐指数
1
解决办法
1万
查看次数

使用Javascript和HTML进行桌面应用程序开发

我正在寻找使用HTML和JavaScript进行桌面应用程序开发的Titanium Appcelerator替代品.我想将Web应用程序转换为桌面应用程序.因此,将有很多服务器交互.Appcelerator是一个不错的选择,但看起来该公司不再对Desktop SDK感兴趣.此外,来自Appcelerator的ajax请求不会保留cookie.

我读到Adobe Air可以用于桌面应用程序开发,但我不想使用flash.

XULRunner有多好?它会允许像Growl notificaiton和创建托盘图标等功能吗?

我能在Qt中使用大多数Javascript和HTML来开发应用程序吗?

javascript desktop-application application-framework titanium

14
推荐指数
1
解决办法
7826
查看次数

标签文本没有更新在woodview中的tableview子项中.但在IOS中工作

我试图使用titanium更新/更改android中的lebel.但是文本中没有显示该值.但是我在alert中获得了更新的值.但是ios工作正常.

 var itemcounttext = Ti.UI.createLabel({
 top: 5,
 color: "#000000",
 left:10,
 text:data[i].itemCount,
 width: Ti.UI.SIZE,
 height: Ti.UI.SIZE,
 });
var additem = Ti.UI.createImageView({
image: "/images/plus.jpg",
top: 5,
width: Ti.UI.SIZE,
left:10,
height: Ti.UI.SIZE,
});
adddeleteitemview.add(additem);
additem.addEventListener('click', function(e)
    {
        var item=e.source.getParent();
        squantity = e.source.squantity;
            squantity = Number(squantity) + 1;
            item.children[1].text = squantity;
            alert(item.children[1].getText());
Run Code Online (Sandbox Code Playgroud)

这里正在获取具有正确更新值的警报.但它没有显示在标签中.你能给我一个想法来解决android中的这个问题.

编辑:

从VRK评论我也试过了.但它没有工作.但我正确地得到警报.

item.children[1].setText(squantity);
Run Code Online (Sandbox Code Playgroud)

编辑:

我尝试用jsplaine回答.但我无法得到解决方案.在这里我创建了tableview.在这个tableview行中我们创建了view.in该视图我已经添加了additem,itemcounttext值.如果我们点击additem意味着需要更改itemcounttext值.这是一个流程.

如下面的截图是我的app tableview的子视图:

productname

remove     itemcount   add
image      text        image
Run Code Online (Sandbox Code Playgroud)

这三个图像,文本,图像值都添加到一个视图中.这就是为什么在单击添加图像时添加用于获取父视图的代码:

var item=e.source.getParent();
Run Code Online (Sandbox Code Playgroud)

这里得到了parent.also我写了下面的代码来获取这个视图的标签:

item.children[1].text
Run Code Online (Sandbox Code Playgroud)

如果单击添加图像,则正确地将标签值增加1.使用此代码验证.am alert(item.children[1].getText()); 但是没有显示更新的值.这是我的确切怀疑.

编辑:

这是我的完整源代码.

 dataArray = [];       
 $.ViewCartItemslist_total_value.text = totalamount; …
Run Code Online (Sandbox Code Playgroud)

android label titanium tableview imageview

14
推荐指数
1
解决办法
909
查看次数

如何在Titanium中向TableViewSection追加一行?

我正在使用Titanium开发一个iPhone应用程序,需要在特定的TableViewSection上添加一行.我无法在页面加载时执行此操作,因为它是在应用程序的整个生命周期中由用户动态完成的.文档说TableViewSection有一个add方法,它接受两个参数,但我不能使它工作.这是我现有的代码:

for(var i = 0; i <= product_count; i++){
    productsTableViewSection.add(
        Ti.UI.createTableViewRow({
            title:'Testing...'
        })
     );
}
Run Code Online (Sandbox Code Playgroud)

这只是传递一个参数,这导致Titanium死于未捕获的异常:

2010-04-26 16:57:18.056 MyApplication[72765:207] *** Terminating app due to uncaught 
exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in 
section 2. The number of rows contained in an existing section after the update (2) must be 
equal to the number of rows contained in that section before the update (1), plus or minus the 
number of rows inserted or deleted …
Run Code Online (Sandbox Code Playgroud)

javascript iphone titanium

13
推荐指数
1
解决办法
6969
查看次数

如何在真正的Android设备上部署Titanium应用程序?

我想知道如何从TitaniumStudio部署到真正的Android设备.我有一个在模拟器中工作的钛应用程序.但我对如何让它在真实设备上运行毫无头绪.

我知道如何使用Xcode将我的钛应用程序部署到我的iPhone上.

我也安装了Eclipse,并设法将简单的HelloWorld.app部署到真正的Android设备上.


更新:我刚刚了解到可以使用命令行完成部署.

[ 12:49:59 ~ ] $ adb install /Users/johndoe/git/helloworld/build/android/bin/app.apk
772 KB/s (2035982 bytes in 2.573s)
        pkg: /data/local/tmp/app.apk
Success
[ 12:50:54 ~ ] $
Run Code Online (Sandbox Code Playgroud)

有没有办法在TitaniumStudio中部署?

eclipse android titanium

12
推荐指数
2
解决办法
1万
查看次数

javascript中的self和this之间的区别以及何时使用它们中的任何一个

可能重复:
这个JavaScript习语的基础是:var self = this?

我很困惑,什么时候使用自我和这在JavaScript中.
我知道是指当前的上下文,而self指的是当前窗口.
当我在Titanium中开发应用程序时.我想知道何时使用自我或者这个 或者确实在钛开发中有任何自我概念.

这是我在钛commonJS模块中执行的示例代码

var auth = require('/SDKTest/auth');
var nodeAPI = require('/SDKTest/nodeAPI');
function myAPI() {
     this.auth = auth;
     this.nodeAPI = nodeAPI;
     return this;
    }
module.exports = myAPI;
Run Code Online (Sandbox Code Playgroud)

此代码的工作,但我可以用自己代替这个?而不是使用这个,我可以创建一个命名空间,并做这样的事情:

  function myAPI() {
     var api = {};
     api.auth = auth;
     api.nodeAPI = nodeAPI;
     return api;
    }
Run Code Online (Sandbox Code Playgroud)

这两种方法都有效,但在这里使用的用途是什么

javascript titanium

11
推荐指数
2
解决办法
5729
查看次数

OA自定义URL方案拒绝工作/如何在OAuth之后导航回Android应用程序

编辑,请在这个问题下面看到我的第二个答案,以便更简洁,更简单地显示问题


我终于打败了我的智慧.我正在使用钛的跨平台应用程序(IOS和Android),并通过休息呼叫连接到salesforce api.我在这个问题上花了3天20个小时,但仍然陷入困境.任何支持将非常感谢!所以让我们潜入.

我想要它做什么: 应用程序启动,检查用户是否已使用oauth2授权给予令牌,如果没有,则为用户提供salesforce登录屏幕.用户输入凭据并点击"允许"按钮,然后我们被重定向回应用程序.

问题: 从上面我想要它做的描述一切都有效,除了粗体的最后一行.一旦用户点击"允许"按钮,我们就会收到此未知的网址方案错误:

error

代码: 代码几乎由3个不同的重要区域组成

  • 我的index.js文件,它是进行salesforce登录调用的地方
  • 我的AuthService.js文件,它是index.js中调用salesforce url信息的位置
  • 我的tiapp.xml,其中配置的东西是为Android自定义url方案

index.js

var Auth = require('AuthService');

Auth.openLogin();
Run Code Online (Sandbox Code Playgroud)

AuthService.js这里只有"openLogin"函数非常重要.

var loginWindow;

module.exports = {

  get: function () {
    console.log("made it into the auth.get function");
    return Ti.App.Properties.getObject('auth');
  },

  set: function (data) {
    Ti.App.Properties.setObject('auth', data);
    console.log("auth set function was executed!!!");
  },

  erase: function () {
    Ti.App.Properties.removeProperty('auth');
  },

  openLogin: function () {

    console.log("made it into openLogin!!");


   var webview = Titanium.UI.createWebView({url:'https://login.salesforce.com/services/oauth2/authorize' +
      '?response_type=token&display=touch' +
      '&redirect_uri=testapp://app.open' +
      '&client_id=' + Ti.App.Properties.getString('salesforce_client_id')});


      //console.log("Webview …
Run Code Online (Sandbox Code Playgroud)

rest android salesforce titanium appcelerator

11
推荐指数
2
解决办法
1万
查看次数