【问题标题】:addCssFile() no longer functions in our app. Is not called and does nothingaddCssFile() 在我们的应用程序中不再起作用。不被调用并且什么都不做
【发布时间】:2019-06-12 21:35:51
【问题描述】:

我们的应用程序不再能够使用 tns 核心函数 addCssFile()。该函数根本没有被调用。

我尝试通过调用组成的文件名来更改其中一个 addCssFile() 调用。它不会触发任何错误,并且代码似乎直接跳过它。我们没有对此脚本进行任何更改,但突然间,这个函数完全没有任何作用。

我刚刚在代码中添加了import addCssFile部分,它说“模块没有导出成员”

  import * as applicationSettings from 'tns-core-modules/application-settings';
  import { localize } from 'nativescript-localize';
  import { ToastDuration, Toasty } from 'nativescript-toasty';
  import { fromObject } from 'tns-core-modules/data/observable';
  import { Page, topmost } from 'tns-core-modules/ui/frame';
  import {addCssFile} from 'tns-core-modules/ui/core/view';

  const source = fromObject({});

  source.set('settingsItems', [
    { name: localize('ColorSchemeMenu.ob'), enabled: true },
    { name: localize('ColorSchemeMenu.bw'), enabled: true },
    { name: localize('ColorSchemeMenu.rw'), enabled: true },
    { name: localize('ColorSchemeMenu.py'), enabled: true }
  ]);

  export function onNavigatingTo(args: any) {
    const page = args.object;
    page.bindingContext = source;
  }

  export function settingsItemTapped(args: any) {
    const button = args.object;
    const homePage = button.page.navigationContext.homePage as Page;
    const currentTheme = applicationSettings.getString('theme', 'blue');

    if (button.text === localize('ColorSchemeMenu.ob')) {
      //Orange
      homePage.addCssFile('themes/orange.css');
      applicationSettings.setString('theme', 'orange');
    } else if (button.text === localize('ColorSchemeMenu.bw')) {
      // Blue
      homePage.addCssFile('themes/blue.css');
      applicationSettings.setString('theme', 'blue');
    } else if (button.text === localize('ColorSchemeMenu.rw')) {
      // Red
      homePage.addCssFile('themes/red.css');
      applicationSettings.setString('theme', 'red');
    } else if (button.text === localize('ColorSchemeMenu.py')) {
      // Purple
      //homePage.addCssFile('themes/purple.css');
      homePage.addCssFile('themes/needstofail.css');
      applicationSettings.setString('theme', 'purple');
    }

    console.log('\n\ncolor scheme has been set to: ', applicationSettings.getString('theme'), '\n\n');
    new Toasty(
      `${localize('ColorSchemeMenu.changedMsg')} ${button.text}`,
      ToastDuration.SHORT
    ).show();

    //transition back to settings page after selecting color scheme
    topmost().navigate({
      moduleName: 'home/home-page',
      animated: true,
      transition: {
        name: 'slideRight'
      }
    });

  }


  export function homeBtnTapped(args: any) {
    topmost().navigate({
      moduleName: 'home/home-page',
      animated: true,
      transition: {
        name: 'slideRight'
      }
    });
  }

单击设置页面上的任何按钮应将 css 信息添加到主页并更改对象颜色。该应用程序识别出按钮被按下,但没有发生 css 更改。手动更改主页的 css 文件确实会改变页面的外观。

【问题讨论】:

  • 当然不是导出成员,只是View实例的私有方法,为什么要导入呢?
  • @Manoj 我现在正在尝试任何事情。那仍然没有回答我的问题,为什么该方法会停止工作?
  • 对不起,我不是想回答,而是想了解您为什么要导入一个不存在的方法,它可能只会引入一个 TS 错误。 addCssFile 应该可以工作,如果您有问题,请分享一个 Playground 示例,在该示例中可以重现该问题。
  • 我如何设置游乐场,以及如何在不提供整个应用程序代码的情况下进行设置? @Manoj
  • 除了重现问题所需的示例代码外,您无需共享任何内容,请使用play.nativescript.org

标签: javascript css nativescript


【解决方案1】:

您可以使用file-system,如下所示使用application.addCss

import * as application from 'tns-core-modules/application/application';
const fs = require('tns-core-modules/file-system');

    if (button.text === localize('ColorSchemeMenu.ob')) {
      //Orange
       pageCss = fs.path.join(fs.knownFolders.currentApp().path, 'themes/orange.css');
       fs.File.fromPath(pageCss).readText().then((res) => {
                application.addCss(res);
            });
      applicationSettings.setString('theme', 'orange');
    } else if (button.text === localize('ColorSchemeMenu.bw')) {
      // Blue

      applicationSettings.setString('theme', 'blue');
    } else if (button.text === localize('ColorSchemeMenu.rw')) {
      // Red

      applicationSettings.setString('theme', 'red');
    } else if (button.text === localize('ColorSchemeMenu.py')) {

      applicationSettings.setString('theme', 'purple');
    }

【讨论】:

    猜你喜欢
    • 2011-03-12
    • 2011-03-24
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 2022-11-30
    相关资源
    最近更新 更多