钛合金:运行require语句中存在的函数

时间:2017-03-24 12:41:45

标签: titanium appcelerator appcelerator-titanium titanium-alloy

我有以下代码:

INDEX.XML

<Window>
    <View>
        <Require id="foo1" src='foo'>            
    </View>
</Window>

foo.xml

<View>
    <Label>This is from foo</Label>
</View>

foo.js

function doSomething() {
    Ti.API.info('YES!');
}

问题

我希望能够在doSometing()中运行index.js函数。我怎么能这样做?

我试过了:

$.foo1.doSomething()

但这似乎不起作用。

2 个答案:

答案 0 :(得分:3)

<Window>
    <View>
        <Require id="foo1" src='foo'>            
    </View>
</Window>

在此代码中,Require id 包含foo.js文件的控制器,表示

foo.js

$。foo1 = $

要从Require访问任何属性或方法,您可以将该属性附加到任何视图,或者只是将其导出为:

<强> foo.js

$.doSomething = function () {
    Ti.API.info('YES!');
}

<强> index.js

$.foo1.doSomething();

如果出现 @ miga的回答,您需要在 index.js 中使用此代码:

// view is the id of topmost view to which you attached the method.
$.foo1.view.doSomething();   

答案 1 :(得分:1)

foo.xml

<View id="view">
    <Label>This is from foo</Label>
</View>

foo.js

$.view.doSomething = function(){
  Ti.API.info('YES!');
}

然后:$.foo1.view.doSomething();

编辑更好

exports.doSomething = function(){
  Ti.API.info('YES!');
}

在没有.view的情况下使用它!