原生脚本UI-Builder和数据绑定



我尝试构建一个由多个textfield组成的自定义组件。这个组件应该在内部通过Observable使用双向数据绑定。但我就是不能让它工作。

<标题> main.js h1> idget/durationrow.js
exports.init = function(options){
    model = _.isUndefined( options )
        ? model
        : options.model;
    _.defaults(model, {
        label:      "no data given",
        start:      "",
        end:        "",
        duration:   "30"
    });
    var durationRow = builder.load({
        path: 'widgets/durationRow',
        name: 'durationRow',
    });
    durationRow.getViewById("startText").bind({ 
        sourceProperty: "start", 
        targetProperty: "text", 
        twoWay: true }, 
    model);
    return durationRow;
}

原来在start, end, duration字段中的数据被插入到我的xml布局视图的text属性中。但是在初始的"渲染"之后,对模型的更改不会传播到UI中。

我尝试了基于XML的数据绑定通过text={{ start }}在我的XML和这个基于js的数据绑定。两者都只在"初始渲染"中工作,没有更新被提升。

有什么建议吗?谢谢!

好吧,我搞错了。我建立了整个init的东西,因为我不能得到"数据"到我的"小部件"。毕竟,这一切都是基于一个简单的小错误…我试着用bindContext代替bindingContext和所有的地狱…

所以工作解决方案:

main.js

var row = builder.load({
    path: 'widgets/durationRow',
    name: 'durationRow',
    attributes: {
        bindingContext: rowData
    }
});

现在在durationRow.js中不需要任何其他内容。所有对rowData的js访问都是通过bindingContext完成的,一切都像魅力一样工作:)

最新更新