Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 从不同角度控制器多次调用$wakanda.init_Angularjs_Ionic Framework_Wakanda_4d Database - Fatal编程技术网

Angularjs 从不同角度控制器多次调用$wakanda.init

Angularjs 从不同角度控制器多次调用$wakanda.init,angularjs,ionic-framework,wakanda,4d-database,Angularjs,Ionic Framework,Wakanda,4d Database,我正在开发一个在Wakanda Digital App Factory 1.0.3中构建的移动应用程序,使用Ionic和AngularJS以及4D后端数据库 我有两种不同的4D方法可通过4D Mobile通过两个单独的4D表使用,这两个4D表可通过两个不同的角度控制器访问: .controller('homeCtrl', function($scope, $wakanda) { $wakanda.init('servers').then(function(ds) { ds

我正在开发一个在Wakanda Digital App Factory 1.0.3中构建的移动应用程序,使用Ionic和AngularJS以及4D后端数据库

我有两种不同的4D方法可通过4D Mobile通过两个单独的4D表使用,这两个4D表可通过两个不同的角度控制器访问:

.controller('homeCtrl', function($scope, $wakanda) {
    $wakanda.init('servers').then(function(ds) {
        ds.servers.www4DMionicHomeOverview().$promise.then(function(event) {
            $json = event.result;
            $scope.overview = $json.servers;
            $scope.healthCheck = $json.healthCheck;
        }, function(err) {
            debugger
            console.log(err);
        });
    }, function(err) {
        debugger
        console.log(err);
    });
})

.controller('errorLogCtrl', function($scope, $wakanda) {
    $wakanda.init('server_log').then(function(ds) {
        ds.server_log.www4DMionicErrorLog().$promise.then(function(event) {
            $json = event.result;
            $scope.errors = $json;
        }, function(e) {
            debugger
            console.log(e);
        });
    }, function(e) {
        debugger
        console.log(e);
    });
})
我注意到调用这些4D方法时出现了一个奇怪的问题,即第一个方法可以工作,但第二个方法将失败,无论我首先调用哪个方法。也就是说,如果我先调用
ds.server\u log.ww4dmionicErrorLog()
,它会工作,但随后调用
ds.servers.www4DMionicHomeOverview()
会失败,直到我刷新浏览器

相反,如果我先调用
ds.servers.www4DMionicHomeOverview()
,它就会工作,但随后调用
ds.server\u log.ww4dmionicorlog()
会失败


第二种方法的错误是:

ionic.bundle.js:25642 TypeError:无法读取未定义的

ionic.bundle.js:25642 TypeError:无法读取未定义的

取决于我首先调用的两个方法中的哪一个


我很好奇这是否与我如何从每个控制器调用
$wakanda.init
有关。政府并没有说这样做不好

设置角度服务并在服务中解析
$wakanda
是否更好

更换

 $wakanda.init('servers').then(function(ds) {...

并对控制器中的所有对象执行相同的操作


在您的情况下,我建议您使用$wakanda.init()

我的项目使用1.3.7 AngularJS

为了提高效率,我将呼叫次数减少到

$wakanda.init().then(function oninit(ds) {
                            $rootScope.ds = $wakanda.$ds;
将来的调用使用$rootScope.ds

但是,我的每个服务都有自己对$wakanda.init()的调用


我发现在UI控制器中,对$wakanda.init()的多次调用将失败。

在wakanda源代码中找到这些注释“init method to execute once on your application(将检索WAF目录、数据库描述)”和“init部分完成后,您可以通过此singleton方法访问数据存储”
$wakandaResult.getDatastore=function(){
。因此,假设您只能初始化一次,文档中必须显示两个示例,而不是一个示例app@Tim:我不知道wakanda,但如果您使用ui路由器,我建议您解决$wakanda.init('xxx')问题在每个状态下,然后在控制器中注入结果等。让我们知道结果,PS:不要忘记使用调试器:)谢谢!这似乎可以工作,表明可以从多个不同的控制器调用
$wakanda.init
。但是,从LoginController a调用
$wkanda.init
一次会更好吗然后从其他控制器中使用
var ds=$wakanda.getDataStore();
?如果是这样,如何才能保证使用
var ds=$wakanda.getDataStore();
$wakanda.init().then(function oninit(ds) {
                            $rootScope.ds = $wakanda.$ds;
        userCredentials: function(login,password,validate) {
        var deferred = $q.defer();

        $wakanda.init().then(function oninit(ds) {
            ds.User.userCredentials(login,password,validate, {
                onSuccess: function(data) {
                    deferred.resolve(data);
                },
                onError: function(err) {
                    deferred.reject(err.message);
                }
            });
        }); //$wakanda.init()

        return deferred.promise;
    },