我一直在尝试将一个服务对象从http post响应设置到控制器并从另一个控制器获取它.
我在SO或网站上看到的教程更侧重于从HTML输入到控制器,另一个控制器获取值.
我想避免使用rootscope,我是angular-js的新手.
第一个控制器(将Data1和Data2放在一个对象中)
.controller('GetItem',function($scope, $http, $filter, $ionicPopup, $stateParams, $cordovaSQLite, $cordovaDatePicker, dataFactory){
...
console.log(resp.data);
var data1= resp.data.data1;
var data2= resp.data.data2;
}
Run Code Online (Sandbox Code Playgroud)
第二个控制器(获取对象并检索data1和data2)
一些指针将深表赞赏!
Update1 :(保存函数有效但Get函数返回EMPTY):
.service('StoreService',function(){
var data1=[]; //{} returns me an empty object
this.save=function(data1){
alert('DATA: '+ data1); //able to retrieve string
this.data1=data1;
};
this.getData1=function(){
alert('DATA1: '+ data1); //unable to get string
return data1;
};
})
Run Code Online (Sandbox Code Playgroud)
这是从服务中检索的第二个控制器:
.controller('unlock', function($scope, $timeout, dataFactory, $stateParams,StoreService) {
function test(){
console.log(StoreService.getData1());
Run Code Online (Sandbox Code Playgroud)
更新2 :(工作)Tomislav的掠夺者:http://plnkr.co/edit/srAphQhAYuBZL18MY1Kr?p =preview
我有2个select语句,第一个选择由我的第一个webservice请求填充.用户在第一个选择中选择所需的数据,其中将触发onChange方法以检索第一个选择对象,再次运行webservice以检索另一组数据并填充第二个选择语句.
HTML:
<div class="input-label">
Select Kittens:
</div>
<select
ng-model ="options"
ng-options ="option.name for option in options"
ng-change="onChange(options)">
<option>--</option>
</select>
<br>
<div class="input-label">
Select Age:
</div>
<select
ng-options ="detail.age for detail in details">
<option>--</option>
</select>
Run Code Online (Sandbox Code Playgroud)
控制器:
.controller("ctrl",['$scope',function($scope){
$scope.options = [
{id:1, name:'typeA'},
{id:2, name:'typeB'},
{id:3, name:'typeC'},
{id:4, name:'typeD'}
]
$scope.onChange = function(item){
console.log("Hi world!");
console.log(item);
$scope.details = [
{id:1, age:'11'},
{id:2, age:'10'},
{id:3, age:'9'},
{id:4, age:'6'}
]
};
}])
Run Code Online (Sandbox Code Playgroud)
问题:
1)选择第一个选择后,该值将从选择框中消失,但值(对象)将成功传递给onChange函数
2)无法填充第二个选择框
我创建了一个plunkr来复制我的问题(没有webservice).谢谢!
要将纪元dateTime转换为人类可读的,new date(1495159447834)
就足够了。
我现在遇到的问题是,对于我的混合应用程序,如果用户将手机日期时间设置中的时区设置为GMT +12:00,则人类可读的dateTime将不同于我想要的用户拥有,我希望他/她遵循服务器时区。
因此,我将如何以人类可读的格式将纪元数转换为特定的给定时区。
我试过像这样的例子:
var test= new Date('1495159447834 GMT+0800').toString();
Run Code Online (Sandbox Code Playgroud)
它返回一个无效的日期。
如果可能,我希望没有任何库。我在这里浏览了所有答案,我认为找不到所需的答案。如果以前有相同主题的问题,请告诉我,我将结束此问题!
我试图将从.get函数检索到的值设置为外部声明但不能这样做的变量.
var dt;
//retrieve
this.local.get('didTutorial').then((value) => {
alert(value);
dt = value;
})
console.log("Local Storage value: "+dt);
Run Code Online (Sandbox Code Playgroud)
我能够为警报获得"true",但是对于在函数外部打印的console.log获得"未定义".
一个解决方法是我可以将所有剩余的代码放入".then函数"中,但这将非常混乱.
更新(解决方案):
根据离子api(http://ionicframework.com/docs/v2/api/platform/storage/LocalStorage/),他们使用.get来检索值.
由于使用promises具有自身的局限性,因此使用以下内容:
constructor(navController) {
this.navController = navController;
this.local = new Storage(LocalStorage);
}
Run Code Online (Sandbox Code Playgroud)
和getItem函数,
localStorage.getItem('didTutorial')
Run Code Online (Sandbox Code Playgroud)
您将能够检索它而无需将所有内容都放入回调方法中.
我正在尝试做一个滑块样式页面,它根据我给出的json文件显示动态数据.
在我的控制器中:
constructor(navController) {
this.navController = navController;
this.populateHistory();
}
populateHistory(){
console.log("populating!");
var tests = '{[{"name":"jack"},{"name":"john"},{"name":"joe"}]}';
}
Run Code Online (Sandbox Code Playgroud)
在我的HTML中:
<ion-slides>
<ion-slide ng-repeat="test in tests">
{{test.name}}
</ion-slide>
</ion-slides>
Run Code Online (Sandbox Code Playgroud)
即使您触发console.log,页面也不会出现.我猜我的html中有一些语法错误我没注意到.我必须在Ionic 2中使用collection-repeat吗?
我有一个颤振代码片段,它从我的 iframe 页面侦听 postMessage。(flutter_webview_plugin: ^0.3.9+1)
flutterWebviewPlugin.onStateChanged.listen((viewState) async {
String script = 'window.addEventListener("message", receiveMessage, false);' +
'function receiveMessage(event) {console.log(\'receiving data from child , data as follows: \',event.data)}';
flutterWebviewPlugin.evalJavascript(script);
}
Run Code Online (Sandbox Code Playgroud)
如果event.data返回特定值,我想触发特定的颤振函数, 相机值将触发我调用相机插件等的特定函数。意思是说我的目标 iFrame 将尝试通过postMessage方法进行跨域通信。
对于科尔多瓦,我可以这样做:
window.addEventListener( "message" , function( event )
{
else if( event.data.indexOf( "camera" ) >= 0 )
{
//Trigger Camera Function
Run Code Online (Sandbox Code Playgroud)
我该如何为颤振做这件事?
我目前正在使用USB连接来使用chrome的检查设备调试我的Web应用程序.在演示或演示期间,我不会将我的移动设备连接到我的PC客户端,但我希望在我的PC上看到控制台日志,以防万一发生任何异常事件.无论如何通过WIFI做到这一点?
或者我是否必须将输出数据发送到我的网络服务并从那里查看?
我目前正在使用 fast.ai 来训练图像分类器模型。
data = ImageDataBunch.single_from_classes(path, classes, ds_tfms=get_transforms(), size=224).normalize(imagenet_stats)
learner = cnn_learner(data, models.resnet34)
learner.model.load_state_dict(
torch.load('stage-2.pth', map_location="cpu")
)
Run Code Online (Sandbox Code Playgroud)
这导致:
torch.load('stage-2.pth', map_location="cpu") 文件“/usr/local/lib/python3.6/site-packages/torch/nn/modules/module.py”,第 769 行,在load_state_dict 自我。类。name , "\n\t".join(error_msgs))) RuntimeError: Error(s) in loading state_dict for Sequential:
...
state_dict 中的意外键:“model”、“opt”。
我环顾四周并尝试使用以下解决方案:
# original saved file with DataParallel
state_dict = torch.load('stage-2.pth', map_location="cpu")
# create new OrderedDict that does not contain `module.`
from collections import OrderedDict
new_state_dict = OrderedDict()
for k, v in state_dict.items():
name = k[7:] # remove `module.`
new_state_dict[name] = v …
Run Code Online (Sandbox Code Playgroud)