AngularJS -当URL改变时不调用工厂
AngularJS - factory not being called when URL changes
我是Angular JS的新手,当我的URL发生变化时,我正在努力获得一个工厂来返回数据。
在我的应用配置我有:
.state('app.sessionActivity', {
url: "/session/:sessionid/activity/:id",
views: {
'menuContent' :{
templateUrl: "templates/activity.html",
controller: 'SessionActivityCtrl'
}
}
})
我的控制器:
.controller('SessionActivityCtrl', ['$scope', '$stateParams', 'localJSONData', function($scope, $stateParams, localJSONData) {
var activityID = $stateParams.id;
var activityVideoURLSRC = null;
localJSONData.getJSONData()
.success(function(data){
$scope.activityData = data[activityID - 1];
});
}])
我的工厂:
.factory('localJSONData', ['$http', '$stateParams', function($http, $stateParams){
var sessionID = $stateParams.sessionid;
return {
getJSONData: function(){
if(sessionID == 1){
return $http.get('json/session1_activities.json', {cache:false});
}
if(sessionID == 2){
return $http.get('json/session2_activities.json', {cache:false});
}
}
}
}])
当我第一次加载页面并第一次访问URL(例如)/session/1/activity/1时,这一切都有效。但是,当我加载URL(例如)/session/2/activity/2时,数据来自会话1。当我在chrome中调试时,工厂不会被第二次调用。
我在概念上没有得到一些东西,没有使用正确的方法,或者在我的代码中有任何错误?
你在sessionID
传递的方式不是一个好主意,你为什么不把它传递给你的工厂本身的方法?
return {
getJSONData: function(sessionID){
if(sessionID == 1){
return $http.get('json/session1_activities.json', {cache:false});
}
if(sessionID == 2){
return $http.get('json/session2_activities.json', {cache:false});
}
}
控制器:
localJSONData.getJSONData($stateParams.id)
.success(function(data){
$scope.activityData = data[activityID - 1];
});
这个工作的原因是第一次你的应用程序加载是因为$stateParams
正确地计算初始状态的参数,但之后不更新。最好的方法就是我上面发布的。
相关文章:
- 如何使用异步调用更改工厂的变量
- 如何将控制器http调用转换为接受参数的服务/工厂模式
- Jasmine测试工厂函数调用本地函数和另一个函数-获取错误:应该是间谍,但得到了function
- 谷歌日历 api 调用可以在角度工厂内返回承诺吗?
- 我是否需要将工厂调用放在控制器的函数中
- 如何从变量中动态调用工厂方法
- 如何从 AngularJS 中的服务调用工厂
- 使用AngularFire创建用户并调用工厂以显示通知
- 调用工厂方法时出现 Angularjs 错误
- 调用工厂函数会触发错误
- 正在尝试调用工厂方法
- AngularJS -当URL改变时不调用工厂
- 在Angular.js中从指令控制器调用工厂
- AngularJS:在循环中调用工厂方法
- 为什么在angular中调用工厂在加载时发生了3次
- 调用工厂函数一次
- AngularJS:从控制器调用工厂
- 在Angular JS中从decorator内部调用工厂服务
- Angular js:如何同步调用工厂/服务方法
- 如何在 ng-submit 调用工厂函数后更新视图