return true; }, // fail function function(data) { timeout(function() { ionicLoading.hide(); }, 1200); return false; }); } catch (error) { scope.showAlert1("call:" + error.message); return false; }
整理后的代码如下:
路由:
.state('tab.find_med', { url: "/find_med", views: { 'tab-find_med': { templateUrl: "find_medicine.html", controller: 'find_med_contrller', resolve:{ adpic:function(){ var data = {}; appCallServer(http, "9101", data, //success function function(data) { console.log("9101_resolve:" + JSON.stringify(data.data)); var adpic = new Array; for (var i = 0; i < data.data.length; i++) { adpic[i] = data.data[i].url; } return adpic; }, // fail function function(data) { ionicLoading.show({ template: "查询广告失败,请检查您的网络连接" }); timeout(function() { ionicLoading.hide(); }, 1200); return false; }); } } } } })
控制器:
scope.getadpic = function() { scope.adpic = adpic; }; $scope.getadpic();
执行程序,查看效果,提示如下错误:

unpr全称是Unknown Provider,也就是说没有找到注入的东西。
找了半天忽然醒悟了,resolve中的对象只有在相应的控制器中才可以获取到,而自己之前是在别的控制器中添加的resolve对象,难怪总是报服务未注入的错误呢。正确的代码如下:
路由:
$stateProvider .state('tab', { url: "/tab", templateUrl: "tabs.html", controller: 'tabsCtrl', resolve:{ adpic:function(){ return "www"; } } })
控制器:
myCtrl.controller('tabsCtrl', function($scope, $rootScope, $http, $location,... $timeout, adpic) {
...
$scope.getadpic = function() {
console.log("adpic.........." + adpic);
};
$scope.getadpic();
}
所以一定要掌握原理。不要茫然。
添加以上代码后,HBuilder报如下错误:

通过参考网络文献,优化后的代码如下:
// 利用Factory单例特性创建服务 myModule.factory('myAdpicService',function(q){
return { getAdpic: function() { var d = http, "9101", data, //success function function(data) { console.log("9101_resolve:" + JSON.stringify(data.data)); var adpic = new Array; for (var i = 0; i < data.data.length; i++) { adpic[i] = data.data[i].url; } console.log("adpic___________:" + adpic); d.resolve(adpic); }, // fail function function(data) { timeout(function() { $ionicLoading.hide(); }, 1200); d.reject(data); }); return d.promise; } } });
$stateProvider .state('tab', { url: "/tab", templateUrl: "tabs.html", controller: 'tabsCtrl',
文末
js前端的重头戏,值得花大部分时间学习。
推荐通过书籍学习,《 JavaScript 高级程序设计(第 4 版)》你值得拥有。整本书内容质量都很高,尤其是前十章语言基础部分,建议多读几遍。
另外,大推一个网上教程 现代 JavaScript 教程 ,文章深入浅出,很容易理解,上面的内容几乎都是重点,而且充分发挥了网上教程的时效性和资料链接。
学习资料在精不在多,二者结合,定能构建你的 JavaScript 知识体系。
面试本质也是考试,面试题就起到很好的考纲作用。想要取得优秀的面试成绩,刷面试题是必须的,除非你样样精通。
这是288页的前端面试题