Javascript 设置“选择”菜单的选定值
我想为选择菜单设置所选值。值来自$stateParams。所以我使用的是ui路由器,选择菜单处于子状态。这是我尝试的 这是工作,但我不能拉i Javascript:Javascript 设置“选择”菜单的选定值,javascript,angularjs,Javascript,Angularjs,我想为选择菜单设置所选值。值来自$stateParams。所以我使用的是ui路由器,选择菜单处于子状态。这是我尝试的 这是工作,但我不能拉i Javascript: .controller('nbgCtrl',function ($scope, MMG, $stateParams) { var milo = $stateParams.serix; var musti = $stateParams.klasor; MMG.adlar.success(function(loHemen, milo,
.controller('nbgCtrl',function ($scope, MMG, $stateParams) {
var milo = $stateParams.serix;
var musti = $stateParams.klasor;
MMG.adlar.success(function(loHemen, milo, musti) {
var i;
for (i=0; i<loHemen.length; i++) {
if (loHemen[i].seri===milo) {
break;
};
};
console.log(i);
$scope.mangalar = loHemen;
$scope.selManga = $scope.mangalar[0];
});
.factory('MMG', function($http){
var fveg= {};
var url = 'http://api.example.com/manga?callback=JSON_CALLBACK';
fveg.adlar = $http.jsonp(url);
return fveg;
})
您的for循环逻辑不完全正确。如果循环体被执行,那么success函数将返回
i
(将为0),函数体的其余部分将不运行。您应该将if条件移动到循环内部
.controller('nbgCtrl',function ($scope, MMG, $stateParams) {
var milo = $stateParams.serix;
var musti = $stateParams.klasor;
// remove the milo and musti variables in your promise callback
// or if you actually want to have the response code and the headers,
// give them appropriate variable names
MMG.adlar.success(function(loHemen) {
var i, miloMangaInArray;
for (i=0; i<loHemen.length; i++) {
if (loHemen[i].seri===milo) {
miloMangaInArray = loHemen[i];
break;
}
};
console.log('found value or undefined',miloMangaInArray);
$scope.mangalar = loHemen;
$scope.selManga = miloMangaInArray;
});
})
.controller('nbgCtrl',function($scope,MMG,$stateparms){
var milo=$stateParams.serix;
var musti=$stateParams.klasor;
//删除promise回调中的milo和musti变量
//或者如果你真的想要响应代码和标题,
//给他们适当的变量名
MMG.adlar.success(功能(loHemen){
var i,米洛曼加纳雷;
for(i=0;与for循环类似的iSeems将始终返回0
Console.log
表示其未定义。如果未定义,则意味着在数组中找不到它。如果使用值为loHemen
和milo
的Console.log执行Console.log,将获得什么输出?Console.log(milo)
函数内部给出了200
但函数外部给出了正确的值。我不理解这是因为MMG
来自工厂?这是因为它是$http
调用的结果。如果您查看HttpPromise
的文档,使用promise fn调用的参数是 (数据、状态、标题、配置、状态文本)
。因为您正在为该变量使用名称milo
,因此您失去了对以前真正的milo
调用的访问权限。我将更新我的示例,向您展示它应该如何工作
[{"seri": "Naruto",
"randomword": [{
"klasor": "138",
"yol": [
]
},
{
"klasor": "300",
"yol": [
]
}
]
},
{
"seri": "One Piece",
"randomword": [
{
"klasor": "137",
"yol": [
]
}
]
}
])
.controller('nbgCtrl',function ($scope, MMG, $stateParams) {
var milo = $stateParams.serix;
var musti = $stateParams.klasor;
// remove the milo and musti variables in your promise callback
// or if you actually want to have the response code and the headers,
// give them appropriate variable names
MMG.adlar.success(function(loHemen) {
var i, miloMangaInArray;
for (i=0; i<loHemen.length; i++) {
if (loHemen[i].seri===milo) {
miloMangaInArray = loHemen[i];
break;
}
};
console.log('found value or undefined',miloMangaInArray);
$scope.mangalar = loHemen;
$scope.selManga = miloMangaInArray;
});
})