当我尝试加载"测试"状态或任何这些状态,控制器不会影响。模板已完全更改,但状态配置中没有来自上述控制器的数据。
我没有在任何地方使用ng-controller指令。
myApp.config(function($stateProvider,$urlRouterProvider){
$stateProvider.state('task',
{
url:'/task',
controller:"TasksController",
views:{
"sidebar":{templateUrl:'/partial/task/taskcreateform.html'},
"content":{templateUrl:'/partial/task/taskgrid.html'}
}
})
.state('notes',
{
url:'/notes',
controller:"TasksController",
views:{
"sidebar":{templateUrl:'/partial/task/taskcreateform.html'},
"content":{templateUrl:'/partial/task/taskgrid.html'}
}
})
.state('test',
{
url:'/test/:id',
controller:"AtTestController",
views:{
"sidebar":{templateUrl:'/partial/task/taskupdateform.html'},
"content":{templateUrl:'/partial/test.html'}
}
})
.state('edittask',
{
url:'/edittask/:editabletaskid',
controller:"TasksController",
views:{
"sidebar":{templateUrl:'/partial/task/taskupdateform.html'},
"content":{templateUrl:'/partial/task/taskgrid.html'}
},
resolve:{
editabletask: function($stateParams,Task){
Task.get({id:$stateParams.editabletaskid},
function(response){
return response;
},
function(err){
console.log(err);
});
}
}
});
$urlRouterProvider.otherwise('task');
});
我的一个控制器是:
////////////////////TEST CONTROLLER/////////////
myApp.controller("AtTestController",function($scope){
$scope.appname="Rahul Apps";
$scope.name=function(){
console.log($scope.appname);
}
$scope.name();
});
答案 0 :(得分:1)
重点是:
任何控制器始终属于视图,而不属于状态
E.g。而不是这个:
// because we used views, this controller is now skipped
controller:"AtTestController",
views:{
"sidebar":{templateUrl:'/partial/task/taskupdateform.html'},
"content":{templateUrl:'/partial/test.html'}
}
我们需要:
views:{
"sidebar":{
templateUrl:'/partial/task/taskupdateform.html',
controller:"AtTestController",
},
"content":{templateUrl:'/partial/test.html'}
}
检查文档中的差异:
如果定义视图对象,则将忽略状态的templateUrl,template和templateProvider。因此,如果您需要这些视图的父布局,则可以定义包含模板的抽象状态,以及包含“views”对象的布局状态下的子状态。