我正在尝试学习angularjs的基础知识,并正在使用教程应用程序和ng-js v1.6.6。虽然这些项目显示(localhost),但浏览器会在screengrab中显示警告。 Chrome没有显示错误 - Firefox的错误。代码是否正常或第17行/第50行是否有错误?
'use strict';
angular.module('components.phone')
.factory('Phone', ['$resource', function($resource,) {
return $resource('components/phone/data/phones/:phoneId.json', {}, {
query: {
method:'GET',
params: { phoneId:'phones' },
isArray: true
}
}
)
return factory;//<======LINE 17 -IS THE REST OF THE CODE 'UNREACHABLE'?
}])
.service('PhoneService', ['$q','$http', '$resource', function($q, $http) {
var service = {
get: function() {
var deferred = $q.defer();
$http.get('components/phone/data/phones/phones.json', {
params: { phoneId:'phones' }
})
.then(function(response){
deferred.resolve(response.data);
})
.catch(function(response){
deferred.resolve(response);
});
return deferred.promise;
},
getAllPhones: function() {
return $http.get('components/phone/data/phones/:phoneId.json', {
cache: true }
).then(function(resp) {
return resp.data;
});
},
getPhone: function(phoneId) {
for (i = 0; i < phones.length; i++) {
if(phones[i].id == phoneId){
this.phone = phones[i];
break; <==== THIS SYNTAX IS NOW CHANGED, THANKS@SYNCRO!
return $http.get('components/phone/data/phones/' + $stateParams.phoneId + '.json')
.then(function(response) {
self.phone = response.data;
})
}
return service.getAllPhones().then(function (getPhone) {
return selected.phone;
})
}
}
return service;
}])
.run(['$rootScope', '$state', '$stateParams',
function ($rootScope, $state, $stateParams) {
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
}
])
答案 0 :(得分:2)
在您的getPhone
方法中,如果您在for循环中return
,则for
循环后的代码将不会执行,这就是您的浏览器通过此警告消息提醒您的原因
您也可以在Chrome中看到此消息,只需更改Chrome DevTools中的日志优先级。
您可以在我为您编写的这个小脚本中看到返回问题:https://jsfiddle.net/kmy7hq8q/
要离开循环,您只需使用break
,而不是return
。
if(phones[i].id == phoneId){
this.phone = phones[i];
break;
}