Javascript 如何从viewModels的一个JS文件到另一个JS文件以及主JS文件中获取当前值?

Javascript 如何从viewModels的一个JS文件到另一个JS文件以及主JS文件中获取当前值?,javascript,html,mvvm,knockout.js,oracle-jet,Javascript,Html,Mvvm,Knockout.js,Oracle Jet,在login.js中,rest API返回某些值,我必须在Dashboard.html中使用这些值,但我无法在Dashboard.js中获取这些值 我还想在index.html中实现同样的功能(即,我必须从login.js获取值) 现在请在下面向我澄清 如何在viewModels中将值从一个js传递到另一个js文件? 如何将值从viewModel js文件传递到main.js文件 login.js define(['ojs/ojcore', 'knockout', 'jquery', 'ojs/

在login.js中,rest API返回某些值,我必须在Dashboard.html中使用这些值,但我无法在Dashboard.js中获取这些值

我还想在index.html中实现同样的功能(即,我必须从login.js获取值)

现在请在下面向我澄清

如何在viewModels中将值从一个js传递到另一个js文件? 如何将值从viewModel js文件传递到main.js文件

login.js

define(['ojs/ojcore', 'knockout', 'jquery', 'ojs/ojknockout',   'ojs/ojinputtext'], 

function (oj, ko, $,main)
{
 var myviewModel = function()
{
  var self = this;
 self.isLoggedIn = ko.observable(false);
 self.username = ko.observable();
 self.password = ko.observable();
  self.save = function(data, event)
{
    $.ajax({

        url: "my url",
        type: "GET",
        headers: { header parameters },

        success: function(data)
        {   
  var json =JSON.stringify($.parseJSON(data));
 // alert(json);
  var val = JSON.parse(json);

 self.ERROR_CODE= ko.observable(val.Body.processResponse.ERROR_CODE);
 self.ERROR_MSG= ko.observable(val.Body.processResponse.ERROR_MSG);
 if(self.ERROR_CODE()=='S')
 {
     self.isLoggedIn(true);
      window.location="js/views/dashboard.html";
 }
 document.getElementById('errormsg').value=val.Body.processResponse.ERROR_MSG;

        },
        error: function(jqXHR, exception)
        {
           alert("Not OK!") ;   
        }
   })
}
 }
 return new myviewModel();

});

我想传递self.isLoggedIn值。

创建一个单独的js文件,比如说xyzState.js,用于在导航或js文件之间保存数据。 现在,这里有几点需要记住

  • 不要在状态文件中使用observable属性,而是使用普通变量
  • 在login.js文件中插入状态文件
  • 在login.vm中,为状态文件变量赋值
  • 现在在dashboard.js文件中插入状态文件
  • 状态的所有属性都应在dashboard.vm中可用 州文件应该是这样的

    define('xyzstate',
        ['ko'],
        function (ko) {
            var self = {};
    
            var clear = function () {          
                self.isLoggedIn= false;
    
            self = _.extend(self, {
                isLoggedIn: false,           
            });
    
            return self;
        });
    

    创建一个单独的js文件,比如xyzState.js,用于在导航或js文件之间保存数据。 现在,这里有几点需要记住

  • 不要在状态文件中使用observable属性,而是使用普通变量
  • 在login.js文件中插入状态文件
  • 在login.vm中,为状态文件变量赋值
  • 现在在dashboard.js文件中插入状态文件
  • 状态的所有属性都应在dashboard.vm中可用 州文件应该是这样的

    define('xyzstate',
        ['ko'],
        function (ko) {
            var self = {};
    
            var clear = function () {          
                self.isLoggedIn= false;
    
            self = _.extend(self, {
                isLoggedIn: false,           
            });
    
            return self;
        });
    

    这就是Oracle JET或knockout中的模块间通信概念。当我们说模块时,它指的是一对html和js(视图和视图模型)文件。因此,当您想要从一个js访问或通信到另一个js时,这意味着您想要进行模块间通信。 Knockout提供了以下函数来完成此操作

    ko.dataFor(document.getElementById('homeContent'))

    你也可以参考我发现非常有用的oracle博客


    她的ko.dataFor(document.getElementById('homeContent'))需要获取要访问可观察变量的模块的元素id。假设有一个模块具有图表组件,并且您想要访问它的钻孔处理程序,您可以在上面的代码中引用图表的元素id。

    这是Oracle JET或knockout中的模块间通信概念。当我们说模块时,它指的是一对html和js(视图和视图模型)文件。因此,当您想要从一个js访问或通信到另一个js时,这意味着您想要进行模块间通信。 Knockout提供了以下函数来完成此操作

    ko.dataFor(document.getElementById('homeContent'))

    你也可以参考我发现非常有用的oracle博客


    她的ko.dataFor(document.getElementById('homeContent'))需要获取要访问可观察变量的模块的元素id。假设有一个模块具有图表组件,并且您想要访问它的钻孔处理程序,您可以在上面的代码中引用图表的元素id。

    您尝试了什么?这应该与任何面向对象语言中的工作方式相同。您从创建登录名的主函数中读取了登录名实例的属性。您尝试了什么?这应该与任何面向对象语言中的工作方式相同。您可以从创建登录实例的主函数中读取该实例的属性。