Nativescript - 在按钮点击时打开 SideDrawer

9 浏览
0 Comments

Nativescript - 在按钮点击时打开 SideDrawer

我正在使用Telerik UI for NativeScript。我需要一个在顶部的切换按钮来打开侧边菜单,但是我无法像文档中那样调用"Showdrawer()"函数。我需要的是在按钮点击时打开侧边菜单。我尝试调用"RadSideDrawer.prototype.showDrawer()",但是失败了。是否有其他适用于Nativescript的侧边菜单可用?

main-page.xml


    
        
            
                
            
        
    
    
        
            
                
        
        
            
                
                    
                
                    
            
        
    

getting-started-model.js

var observableModule = require("data/observable");
var GettingStartedViewModel = (function (_super) {
    __extends(GettingStartedViewModel, _super);
    function GettingStartedViewModel() {
        _super.call(this);
        this.set("mainContentText", "NativeScript的侧边菜单可以通过在页面的XML定义中定义主内容和抽屉内容来轻松设置。该组件具有默认的过渡效果和位置,并且还提供与其状态变化相关的通知。");
    }
    return GettingStartedViewModel;
})(observableModule.Observable);
exports.GettingStartedViewModel = GettingStartedViewModel;
function showSideDrawer(args) {
    console.log("点击了显示侧边菜单按钮。");
    // 显示侧边菜单...
    _super.prototype.showDrawer.call(this);
}
exports.showSideDrawer = showSideDrawer;

main-page.js

var viewModelModule = require("./getting-started-model");
function pageLoaded(args) {
    console.log("页面加载完成");
    var page = args.object;
    page.bindingContext = new viewModelModule.GettingStartedViewModel();
}
exports.pageLoaded = pageLoaded;

0
0 Comments

你之所以得到undefined,是因为没有给抽屉分配id,所以要解决你的问题,给sideDrawer分配一个id,然后你可以调用下面的代码:

var frame = require('ui/frame');
var drawer = frame.topmost().getViewById("sideDrawer");
function showSideDrawer(){
drawer.showDrawer();  //我更喜欢使用.toggleDrawerState();
};

0
0 Comments

问题出现的原因是在调用sideDrawer.showDrawer()方法时报错,提示showDrawer()不是一个函数。解决方法是通过获取元素的实例来解决该问题,可以尝试使用frameModule.topmost().getViewById()方法来获取正确的元素实例。

具体的解决方法如下:

首先,需要导入相关的库文件:

import drawerModule = require("nativescript-telerik-ui-pro/sidedrawer");
import frameModule = require("ui/frame");

然后,通过元素的id获取RadSideDrawer的实例:

var sideDrawer: drawerModule.RadSideDrawer = <drawerModule.RadSideDrawer>(frameModule.topmost().getViewById("sideDrawer"));

最后,调用showDrawer()方法显示SideDrawer:

sideDrawer.showDrawer();

如果在使用require()函数时出现错误,请确保所需的JavaScript库文件都存在于应用程序中。可以参考这里的链接了解更多信息。

如果使用的是非专业版,则需要将require函数改为require("nativescript-telerik-ui/sidedrawer")。

如果在调用sideDrawer.showDrawer()方法时仍然出现问题,可能是因为未正确获取SideDrawer的实例。可以尝试使用frameModule.topmost().getViewById()方法来获取正确的元素实例。如果该元素存在于页面中,则调用getViewById应该能够正确地获取到该元素。

0
0 Comments

问题的原因是可能没有正确调用showSideDrawer函数或者没有正确链接tap按钮。解决方法是给sideDrawer设置一个Id,并使用给出的代码来显示sideDrawer。

0