2016-02-24 20 views
0

我无法获取多个Widget实例的工作。如果我不在小部件中使用模块,我可以执行多个实例。如果我在一个小部件中使用它的多个实例,只有最后一个会起作用。获取多个Widget实例以及模块在视图上工作

我有这个widget.xml

<Alloy> 
    <View id="container" class="container"></View> 
</Alloy> 

这widget.js

var args = arguments[0] || {}; 
var TiCircularSlider = require('de.marcelpociot.circularslider'); 
var lw = _.has(args, 'height') ? args.height*.05 : 5; 
Ti.API.info("args: " + JSON.stringify(args)); 
var sliderView = TiCircularSlider.createView({ 
    top:_.has(args, 'top') ? args.top : 10, 
    height: _.has(args, 'height') ? args.height : 100, 
    width: _.has(args, 'width') ? args.width : 100, 
    lineWidth: lw, 
    filledColor: _.has(args, 'filledColor') ? args.filledColor : "blue", 
    unfilledColor: _.has(args, 'unfilledColor') ? args.unfilledColor : "gray", 
}); 

sliderView.addEventListener('change',function(e){ 
    Ti.API.info("e.value in sliderView event listener: " + e.value); 
}); 
$.container.add(sliderView); 

当我把它无论是在XML:

<Alloy> 
    <Window id="win" backgroundColor="white"> 
    <View id="container" class="container"> 
      <Widget id="btn" top="100" src="btnCircularSlider"/> 
      <Widget id="btn2" top="200" src="btnCircularSlider"/> 
      <Widget id="btn3" top="300" src="btnCircularSlider"/> 
     </View> 
    </Window> 
</Alloy> 

或通过代码使用Alloy.createWidget只有最后一个实例有效。 Only Last One Works

+0

我有一种变通方法。我放弃了这个小部件,并创建了一个js库,并将它放在lib目录中,创建了具有额外内容的sliderView并以此方式返回。 – kgividen

回答

1

@pxtrick发现问题。

集传入顶部值到$.container,而不是sliderView ...这样的:

$.container.top = _.has(args, 'top') ? args.top : 10; 
var sliderView = TiCircularSlider.createView({ 
    height: _.has(args, 'height') ? args.height : 100, 
    width: _.has(args, 'width') ? args.width : 100, 
    lineWidth: lw, 
    filledColor: _.has(args, 'filledColor') ? args.filledColor : "blue", 
    unfilledColor: _.has(args, 'unfilledColor') ? args.unfilledColor : "gray" 
}); 

当传递top到模块时,它设置在视图中的“圆”的顶部(由所创建的模块),从而创建一个长长的透明矩形。在容器中设置top将视图(由模块创建)保持为正方形,并将其放在需要的位置。 要明白我的意思,尝试在widget.tss设置在你的widget container这样的borderColor: ``` '的#container':{ 高度:Ti.UI.SIZE, 宽度:Ti.UI.SIZE, BORDERCOLOR : '#F00' }

enter image description here