2016-08-05 26 views
0

我对NativeScript真的很陌生,Brad Brad(https://stackoverflow.com/users/1893557/brad-martin)建议在Slack频道从这里询问。所以请不要回答Slack提问。有关创建NS应用程序的多个问题

我正在创建一个小型广播应用程序,您可以在其中将歌曲添加到收藏夹中,并查看较早播放的歌曲的历史记录。我不使用Angular,因为他们在Slack对我说,这不是必需的。

问题1:http://s31.postimg.org/rg36kmnnf/favo.png按下该F按钮时,如何将该卡的内容移动到收藏夹选项卡?

问题2:当有两张牌与StackLayout垂直放置,并且手机转为水平时,较低的牌缩小为屏幕大小。我还没有找到解决方案如何添加滚动。

问题3:我如何获得可见列表,添加内容&控制它?所有解决方案都只适用于Angular,我需要非Angular解决方案。只是一个简单的例子,没有什么奇特的。

问题4:如何从本地获取歌曲信息(现在用于测试)JSON文件?

真的很感谢你帮助我。

回答

3

你好SO和NativeScript。作为最初的建议,你应该考虑不仅要问一堆问题,还要展示你的方法以及迄今为止取得的成就。使用this guide,如果您希望收到对您的项目真正有帮助的答案,请遵循指导原则。 现在,让我试着回答你的一些问题。

1.)不确定是否询问如何以可视方式移动元素,或者例如如果您需要创建添加项目的逻辑以及favoriteItem的数组。我假设第一种情况: 您需要将元素从x和y坐标移至顶角。 Animations

page.js

var view = page.getViewById(""my-f-view"); 
view.animate({ 
    translate: { x: 100, y: -100}, 
    duration: 3000 
}); 

当项目被窃听你或许可以通过靶向此动画。

2)您可以在ScrollView

<Page> 
<ScrollView> 
    <StackLayout height="1600"> 
    // some content 
    </StackLayout> 
</ScrollView> 
</Page> 

3.把它包)要显示的数据,您可以使用ListView控件或中继器的列表。 例子: page.xml

<Page xmlns="http://schemas.nativescript.org/tns.xsd" navigatingTo="navigatingTo"> 
    <ListView items="{{ myItems }}" itemTap="listViewItemTap"> 
     <ListView.itemTemplate> 
     <Label text="{{ title || 'Downloading...' }}" textWrap="true" class="title" /> 
     </ListView.itemTemplate> 
    </ListView> 
</Page> 

page.ts(注意这是打字稿的工程实例)

import { EventData, Observable } from "data/observable"; 
import { ObservableArray } from "data/observable-array"; 
import { Page } from "ui/page"; 
import { ItemEventData } from "ui/list-view"; 

import frameModule = require("ui/frame"); 

let viewModel = new Observable(); 
let myItems = new ObservableArray( {title: "Core Concepts"}, 
            {title: "User Interface"}, 
            {title: "Plugins"}, 
            {title: "Cookbook"}, 
            {title: "Tutorials"} ); 

export function navigatingTo(args: EventData) { 

    var page = <Page>args.object; 
    viewModel.set("myItems", myItems); 

    // ListView will be updated automatically when new item is pushed. 
    myItems.push({title:"Publishing"}); 

    page.bindingContext = viewModel; 
} 

export function listViewItemTap(args:ItemEventData) { 
    var itemIndex = args.index; 

    // example how to navigate details-page & pass the tapped item context 
    // frameModule.topmost().navigate({ 
    //  moduleName: "./details-page", 
    //  context: myItems.getItem(itemIndex); 
    // }); 
} 

4)简单地导入您的JSON文件,并将其解析到的数据类型你有望通过你的背景。参见this SO thread,其中类似的讨论存在