钛合金数据绑定:如何从单击视图中获取当前模型?

曲线

我是Titanium Alloy,MVC框架和Backbone.js的新手,所以我在围绕一些概念时遇到了一些麻烦。

以前曾问过类似的问题:

获取钛合金中单击的TableRow的ID?

Appcelerator钛合金:如何在ScrollableView上存储数据以在单击事件中使用

但是,尽管我尝试遵循答案,但是似乎无法使以下代码正常工作。

基本上,在钛合金中进行数据绑定时,如何将当前模型传递给控制器​​?

(也是,这是我的第一个问题,因此,如果有任何可以改进我的查询的地方,请告诉我,谢谢)。

模型

exports.definition = {
config: {
    columns: {
        "issueNo": "number",
        "date": "string",
        "summary": "string",
        "cover": "string"
    },
    adapter: {
        type: "sql",
        collection_name: "issue"
    }
},
extendModel: function(Model) {
    _.extend(Model.prototype, {
        // extended functions and properties go here
    });

    return Model;
},
extendCollection: function(Collection) {
    _.extend(Collection.prototype, {
        // extended functions and properties go here
    });

    return Collection;
}
};

看法

<Alloy>
<Collection src="issue" />
<Window class="container" onClose="cleanup">
    <View id="header">
        <Label id="title">Christian</Label>
    </View>
    <View id="library" class="body" layout="vertical" dataCollection="issue">
        <View id="issuesList" model="{alloy_id}" onClick="alertModel">
            <ImageView id="cover" image="{cover}"></ImageView>
            <Label id="date" text="{date}"></Label>
            <Label id="summary" text="{summary}"></Label>
            <View class="border"></View>
        </View>
    </View>
    <View id="store" class="body" layout="vertical" visible="false" backgroundColor="yellow">

    </View>
    <View id="footer">
        <TabbedBar id="bottomNav" platform="ios" index="0" onClick="viewSelect">
            <Labels>
                <Label>Library</Label>
                <Label>Store</Label>
            </Labels>
        </TabbedBar>
    </View>
</Window>
</Alloy>

控制器

var Newsstand = require("ti.newsstand");
Newsstand.enableDevMode();

var issues = Alloy.Collections.issue;
issues.fetch();

var issue1 = Alloy.createModel("issue", {
    issueNo: 1,
    date: "1/1/2014",
    summary: "Some text.",
    cover: "/issues/cover_1.png"
});

var issue2 = Alloy.createModel("issue", {
    issueNo: 2,
    date: "1/2/2014",
    summary: "Some text.",
    cover: "/issues/cover_2.png"
});

var issue3 = Alloy.createModel("issue", {
    issueNo: 3,
    date: "1/3/2014",
    summary: "Some text.",
    cover: "/issues/cover_3.png"
});

issues.add(issue1);
issues.add(issue2);
issues.add(issue3);


function viewSelect(tabbedBar) {
    var index = tabbedBar.index,
        library = $.library,
        store = $.store,
        bottomNav = $.bottomNav;

    if (index === 0) {
        library.visible = true;
        store.visible = false;
    } else {
        store.visible = true;
        library.visible = false;
    }
}

function alertModel(e){
    var modelId = e.model,
        model = issues.get(modelId),
        issueNumber = model.get("issueNo");

    alert(issueNumber);
}

function cleanup() {
    $.destroy();
}

$.index.open();
菲尔

根据OP的评论更新了答案:

在您发布的第二个链接上,如果将数据绑定到Views,则说您需要在视图模板中的所有元素上设置touchEnabled =“ false”,然后在alertModel函数中使用e.source.model。经过测试,对我有用。

var modelId = e.source.model,
        model = issues.get(modelId),
        issueNumber = model.get("issueNo");

我总是使用ListViews绑定我的数据,并且在使用它们时不需要显式设置touchEnabled。

此外,只有将模型保存到数据库后,才会创建alloy_id。在集合上调用.add()不会保存它,必须在模型上调用.save()才能保存它。

示例在这里:https : //github.com/foolprooflabs/testforcurzmg

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在钛合金列表视图中定位单个项目?

来自分类Dev

如何在钛合金列表视图中定位单个项目?

来自分类Dev

如何获得钛合金中当前打开的窗口?

来自分类Dev

钛合金按钮打开视图

来自分类Dev

如何获取和发布钛合金中的api?

来自分类Dev

钛合金-清空节点(视图/窗口)

来自分类Dev

钛合金的滚动视图有问题吗?

来自分类Dev

Snapchat喜欢在钛合金的视图之间滑动

来自分类Dev

如何在视图中获取模型类型

来自分类Dev

如何将多个模型中的数据绑定到单个视图中的列表

来自分类Dev

视图中的控件如何从视图模型中获取特定数据?

来自分类Dev

钛合金Picker中的数据竞标问题

来自分类Dev

钛合金-如何将视图从0高度动画化为“自动”

来自分类Dev

钛合金-如何将视图从0高度动画化为“自动”

来自分类Dev

如何使用模型在MVC 4的部分视图中绑定dropdownlist?

来自分类Dev

如何使用钛合金在控制器中获取选择器值?

来自分类Dev

我们如何在钛合金中获取和发布API?

来自分类Dev

如何在列表视图中单击特定项时从数据库中获取特定列表

来自分类Dev

在列表视图中单击项目时,如何获取sqlite数据库中表的行ID

来自分类Dev

如果我使用排球库单击列表视图中的特定项目,如何获取特定数据

来自分类Dev

如何获取视图中视图模型的属性?

来自分类Dev

如何在 Xamarin 中将数据从视图绑定到视图模型?

来自分类Dev

CakePHP 3:如何获取视图中的当前语言值?

来自分类Dev

如何在ABAP CDS视图中获取当前年份

来自分类Dev

Django-如何在视图中获取当前项目

来自分类Dev

如何在基于类的视图中获取当前登录的用户?

来自分类Dev

敲除单击绑定如何获取“当前项目”的数组?

来自分类Dev

钛合金:将视图以图像形式保存到photoGallery吗?

来自分类Dev

通过钛合金中的ID更改视图的背景色

Related 相关文章

  1. 1

    如何在钛合金列表视图中定位单个项目?

  2. 2

    如何在钛合金列表视图中定位单个项目?

  3. 3

    如何获得钛合金中当前打开的窗口?

  4. 4

    钛合金按钮打开视图

  5. 5

    如何获取和发布钛合金中的api?

  6. 6

    钛合金-清空节点(视图/窗口)

  7. 7

    钛合金的滚动视图有问题吗?

  8. 8

    Snapchat喜欢在钛合金的视图之间滑动

  9. 9

    如何在视图中获取模型类型

  10. 10

    如何将多个模型中的数据绑定到单个视图中的列表

  11. 11

    视图中的控件如何从视图模型中获取特定数据?

  12. 12

    钛合金Picker中的数据竞标问题

  13. 13

    钛合金-如何将视图从0高度动画化为“自动”

  14. 14

    钛合金-如何将视图从0高度动画化为“自动”

  15. 15

    如何使用模型在MVC 4的部分视图中绑定dropdownlist?

  16. 16

    如何使用钛合金在控制器中获取选择器值?

  17. 17

    我们如何在钛合金中获取和发布API?

  18. 18

    如何在列表视图中单击特定项时从数据库中获取特定列表

  19. 19

    在列表视图中单击项目时,如何获取sqlite数据库中表的行ID

  20. 20

    如果我使用排球库单击列表视图中的特定项目,如何获取特定数据

  21. 21

    如何获取视图中视图模型的属性?

  22. 22

    如何在 Xamarin 中将数据从视图绑定到视图模型?

  23. 23

    CakePHP 3:如何获取视图中的当前语言值?

  24. 24

    如何在ABAP CDS视图中获取当前年份

  25. 25

    Django-如何在视图中获取当前项目

  26. 26

    如何在基于类的视图中获取当前登录的用户?

  27. 27

    敲除单击绑定如何获取“当前项目”的数组?

  28. 28

    钛合金:将视图以图像形式保存到photoGallery吗?

  29. 29

    通过钛合金中的ID更改视图的背景色

热门标签

归档