Skip to content

常见问题

xuwhale6 edited this page Jan 21, 2021 · 16 revisions

Argo新版本有如下改动:

1.子模块使用 mark_data 标记model ,非model数据不用即可
2.子模块先定义再使用
3.json和ui分离
modelData = requireJSON("test.json”)
或者
modelData = requireJSON("test.json").data
4.用其他模块的ID,需为模块设置id1.ID

5.basis 用法改动:需结合grow使用
6.self不能再用于当前控件,可以通过self.出全局的id等
7.子模块的参数类型必须为model或非model。不能model拼接常量。
8.cellHeight去掉

1. 函数中view model 默认是值传递,如何用引用传递

--默认是值传递。这里我们在函数中修改model值,会发现model未被修改。
updata(model)
--使用make_ref将model标记为引用传递,并作为函数的参数传入即可实现函数中修改model值。
updata(make_ref(model))

2. 关于bindwatch的区别

总结:
1.  初始化时,会走bind回调,不会走watch回调。   
2.  bind监听function中使用到的modelwatch(var,func)监听var3.  watch 回调 和值是否改变无关。

⚠️注意: 如修改的是数组list,bind中去使用list[pos] 或 list[pos].key ,list的修改是不会被监听到的,bind不会走。 该情况下 使用 watch(list,function(new) end)实现。 举例如下,查看bind、watch的效果:

model(uData)
---
--- UI
ui {
    --- layout views
    Label("label")
    .width(100)
    .height(100)
    .bgColor(Color(0xaadd00))
    --.bind(function()
    --    --举例1
    --    --监听的是uData.list[1].name,而点击事件里修改的是uData.list[1]
    --    --bind是不会走的
    --    self.text(uData.list[1].name)
    --
    --    --举例2
    --    --若想让bind中实现监听uData.list[1]修改,使用它即可监听到它的修改。
    --    --temp = uData.list[1]
    --    --self.text(temp.name)
    --
    --end)
    .watch(uData.list, function(new)
        --监听了uData.list,点击事件里修改uData.list[1],会收到通知
        --watch回调会走
        self.text(uData.list[1].name)
    end)
    .onClick(function()
        uData.list[1] = { name = "update", age = 66 }
    end)
}

---
--- preview
local function preview()
    uData.list = {
        { name = "11", age = 20 },
        { name = "22", age = 30 }
    }
end

3. position定位

PositionType.ABSOLUTE:绝对定位。相对父View的偏移,偏移后其他同级控件会受影响。
PositionType.RELATIVE:相对定位。相对自身位置的基础上进行偏移,偏移后其他同级控件位置不变。

通过position(top, right,bottom,left)/positionLeft(left)等设置偏移量。

初始ui如下:

如下代码中设置PositionType.ABSOLUTE相关后,可以看到设置position的控件不再占位,其之后的同级控件位置会前移:

--为Label设置position如下
mLabel("津贴2元", Color(180, 150, 100, 0.8))
        .positionType(PositionType.ABSOLUTE)
        .positionLeft(10)
        .positionTop(10)


如下代码中设置PositionType.RELATIVE相关后,可以看到设置position的控件原位置仍保留,其同级控件位置不变:

mLabel("津贴2元", Color(180, 150, 100, 0.8))
        .positionType(PositionType.RELATIVE)
        .positionLeft(10)
        .positionTop(10)

4. iOS algorithm file not found报错处理

若出现如下图algorithm file not found报错信息,需将Podfileuse_frameworks此行注释掉。

5. ArgoUI中原先某些方法已废弃,需替换为新方法

1. gravity -> crossSelf
2. gone/hidden -> display
3. MATCH_PARENT/WRAP_CONTENT 已废弃,若实现宽占满可使用widthPercent(100),设置basis(1)来占满剩余空间。
4. weight -> basis
Clone this wiki locally