【问题标题】:Passing a variable with appcelerator titanium Functions使用 appcelerator Titan Functions 传递变量
【发布时间】:2013-01-12 10:44:36
【问题描述】:

我有一个需要从中获取图像的代码。我有一行想要从 API 调用中获取的图像。我不知道如何获得它。

这是我得到我的行的地方

Ti.Facebook.requestWithGraphPath(Titanium.App.Properties.getString("pageID") +'/feed',     {access_token: Token}, 'GET', function(e){
    if (e.success) {

        json = JSON.parse(e.result);
for (i = 0; i < json.data.length; i++) {
    data = json.data[i];
    row = Ti.UI.createTableViewRow({
        height:'80dp',
         // backgroundImage : 'images/tablebgl.png',
        backgroundColor: 'transparent',
        separatorColor:'transparent',
    });
row.coverid = data.from.id;     

var coverid = row.coverid;  

   Titanium.App.Properties.setString("cv", coverid);

    var imag = Ti.UI.createImageView();
row.add(imag);
require('image').get.signUpConn(data, function(scrollView){ 
imag.setImage(scrollView);
});

这是我的“image.js”

exports.signUpConn = function(data, callback) {
    var scrollView = Ti.UI.createView({
        top : 0,
        right : -1,
        left : -1,
        backgroundColor : 'transparent',
        width : '95%',
        contentWidth : 'auto',
        contentHeight : 'auto',
        layout : 'horizontal'
    });

    var url = "https://graph.facebook.com/" + Titanium.App.Properties.getString("cv") + "?fields=cover";
    var loader = Titanium.Network.createHTTPClient();
    loader.onload = function(data) {
        var data = JSON.parse(this.responseText);
        var images = [];
        for (var c = 0; c < 1; c++) {
            images[c] = {
                image : data.cover.source,
                width : 300
            };

        }
        function square(i) {
            var view = Ti.UI.createImageView({
                image : images[i].image,
                width : 300,
                height : 111,
                top : 5,
            });
            return view;
        }

        for (var i = 0; i < 1; i++) {
            scrollView.add(square(i));
        }

    }
    callback(scrollView);
    loader.open("GET", url);
    loader.send(data);

}

所以我猜错误一定是在函数和/或回调中。

图像将在“scrollView”中。

在函数和回调方面,我一团糟。

这是我得到的错误:

Script Error = 'undefined' is not an object (evaluating 'require('image').get.signUpConn')

谢谢。

【问题讨论】:

    标签: javascript facebook-graph-api titanium appcelerator-mobile


    【解决方案1】:

    您的代码有多个语法错误(Facebook 请求,大量缺少括号),但您引用的错误是因为:

    require('image').get.signUpConn(data, function(scrollView){ 
        imag.setImage(scrollView); // Why do you need this here? 
    });
    

    必须是这个,不需要get

    require('image').signUpConn(data, function(scrollView){ 
        imag.setImage(scrollView);
    });
    

    但这是一个更深层次的问题,您调用callback 为时过早,甚至在图像加载到image.js 之前。另外,你为什么要创建scrollView(这只是一个常规视图)并通过回调传递它?为什么你有一个只循环一次的 for 循环?

    看起来要部分解决这个问题,将 scrollView 移到所有这些之外,将 images 数组传递给回调,然后使用你的 square 函数在回调中添加图像,如下所示:

    require('image').signUpConn(data, function(images){ 
        for(var i = 0;i<images.length;i++) {    
            scrollView.add(square(image[i]);
        }
    });
    

    您还必须在 square 函数中更改一些内容。

    【讨论】:

    • 好的.. 正如我之前所说,我真的不擅长来回传递这个,所以如果你能帮助我,也许我会理解它是如何工作的。这是我的 tableView 的完整代码。 pastie.org/5676117 这是我的 image.js pastie.org/5676123thanx
    • 细化你的问题更具体,我不知道你问我什么。您是否在网上研究过有关callbacksJavaScript in general 的文献?
    猜你喜欢
    • 2023-04-06
    • 2011-07-03
    • 1970-01-01
    • 2014-12-01
    • 2021-05-03
    • 2021-12-19
    • 2014-01-24
    • 2016-11-12
    • 1970-01-01
    相关资源
    最近更新 更多