Я разрабатываю мобильное приложение, встроенное в Wakanda Digital App Factory 1.0.3 с использованием Ionic и AngularJS с базой данных 4D.
У меня есть два различных 4D методы доступны через 4D-Mobile с помощью двух отдельных 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_log.www4DMionicErrorLog()
, сначала он работает, но затем последующие вызовы ds.servers.www4DMionicHomeOverview()
не удаются, пока я не обновляю браузер.
Противоположность также верна в том, что если я звоню ds.servers.www4DMionicHomeOverview()
, сначала он работает, но последующие вызовы ds.server_log.www4DMionicErrorLog()
терпят неудачу.
Я получаю ошибку для второго метода:
ionic.bundle.js:25642 TypeError: Cannot read property 'www4DMionicHomeOverview' of undefined
или
ionic.bundle.js:25642 TypeError: Cannot read property 'www4DMionicErrorLog' of undefined
В зависимости от того, какой из двух методов я называю первым.
Мне интересно, если это может быть связано с тем, как я зову $wakanda.init
от каждого контроллера. documentation не говорит, что это плохо.
Было бы лучше настроить Угловое обслуживание и разрешить $wakanda
в службе?
Нашли эти комментарии в источнике Wakanda «Метод Init, который будет выполняться один раз в вашем приложении (который будет извлекать каталог WAF, описание вашего db)» и «После выполненной части init вы можете получить доступ к хранилищу данных через это одиночный метод "
$wakandaResult.getDatastore = function() {
.Поэтому, предполагая, что вы можете только один раз инициализировать, в документации должно быть показано 2 примера, как это сделать, а не один пример в одном приложении – garethb@Tim: я не знаю wakanda, но если вы используете ui-router, я предлагаю вам разрешить ваши $ wakanda.init ('xxx') в каждом поле, затем в вашем контроллере вы вводите результат и т.д., сообщите нам о результатах, PS: не забудьте использовать отладчик :) –