我正在开发演示应用程序以学习AngularJS。很少有事情困扰我。
1 -
之间有什么区别<div ng-controller="Page2Ctrl">
</div>
和
when('/page2', {templateUrl: 'views/flow1/page2.html', controller: 'Page2Ctrl'}).
问这个是因为两者都工作正常。是否有必要在Html中定义ng-controller
,即使在路由中定义了控制器?
2 -
之间有什么区别function Page4Ctrl($scope){
$scope.pageName = "Page 4 loaded."
}
并且
app.controller('Page4Ctrl', function ($scope) {
$scope.pageName = "Page 4 loaded."
});
第二个是冗长的,需要额外输入。有关使用它们的任何建议吗?
3 - 假设我正在为Customer开发CRUD应用程序。我创建了一个CustomerController.js文件,我想放置与Customer相关的所有方法(Create,Read,Update,Delete,FindById,FindAll等)。如下。这是正确的方法还是控制器应该是一个包含CRUD所有方法的CustomerController?
app.controller('CustomerCreateController', function ($scope) {});
app.controller('CustomerEditController', function ($scope) {});
app.controller('CustomerDeleteController', function ($scope) {});
答案 0 :(得分:4)
1)直接在视图中输入ng-controller
时,视图与该控制器有直接联系。在路径中定义控制器允许您重用视图以满足其他需求。
例如,您有一个显示名称列表的视图。
<ul ng-controller="ListCtrl">
<li ng-repeat="item in items">{{item.name}}</li>
</ul>
现在你的应用程序中的其他地方你有完全相同的结构,显示了你需要再次做同样事情的名字列表。
<ul ng-controller="MyOtherListCtrl">
<li ng-repeat="item in items">{{item.name}}</li>
</ul>
如果您删除ng-controller
属性,则可以重复使用此<ul/>
<ul>
<li ng-repeat="item in items">{{item.name}}</li>
</ul>
和
.when('/list1', {templateUrl: 'list.html', controller: 'ListCtrl'})
.when('/list2', {templateUrl: 'list.html', controller: 'MyOtherListCtrl'})
2) app.controller
将控制器范围限定在您的模块中,而另一个在全局范围内创建控制器。
3)我依赖于您的应用程序是如何构建的,但只需创建一个具有$scope
方法的CustomerController进行编辑,删除和创建。此控制器可以依赖服务或$resoruce
app.controller('CustomerController', function ($scope, customerService) {
$scope.add = function(customer){
//add customer with customerService
};
$scope.edit = function(customer){
//edit customer with customerService
}
$scope.delete = function(customer){
//delete customer with customerService
}
});
如果您想要单独的页面,您仍然可以重复使用相同的控制器。
.when('/add', {templateUrl: 'add.html', controller: 'CustomerController'})
.when('/edit', {templateUrl: 'edit.html', controller: 'CustomerController'})
.when('/delete', {templateUrl: 'delete.html', controller: 'CustomerController'})