angular.js - 网上都查不到,angularjs中,如果index.html中设置了控制器还能设置路由吗?
问题描述
做一个angular的路由的小例子,发现如果要设置路由,页面上如果已有controller控制器,则出现报错,删掉controller控制器之后,路由就正常,这两者有怎样的关系呢?不明白,坐等大神,谢谢解惑!ps:页面中的controller控制器有其他用处,此处为了代码简单,删掉了其中的内容。
报的错误为:
问题解答
回答1:因为路由会有一个控制器,如果在html页面再绑定一个ng-controller的话,等于有两个,这会冲突的。最好将页面控制器的内容写在路由控制器里面。用了路由,就单独写控制器了。
回答2:推荐在路由中配置controller,你可以这样做
$stateProvider .state(’main’, {url: ’/main’,views: { ’main’:{templateUrl:’app/pages/main/listView/listView.html’,controller:’listViewCtrl’ }} })
这样就可以把templateUrl指定的模板和你定义的controller对应起来,名字相同就可以了。
另外如果在路由中设置了controller后,在模板中也设置了ng-controller,会出现一些问题,比较典型的就是如果这个页面进入时需要发起请求,你会发现它会重复发2次请求
回答3:题目中给出的错误信息是控制器main没有定义。
页面可以有多个控制器,控制器也可以嵌套,并且不会有什么冲突。
控制器可以写在页面中,也可以在路由中配置,并且不会有什么冲突。
相关文章:
1. angular.js - Angularjs中点击事件传递参数 给class更换样式。2. angular.js - angularjs中添加高德地图API,地图显示不正常,控制台报错,何解?3. javascript - angularjs中value和constant的区别(主要是能不能修改的问题)4. angular.js - angularjs中的$compile怎么理解?5. angular.js - angularjs中路由的HTML5模式下的URL问题6. angular.js - AngularJS中的$scope的作用相当于android中的适配器一样,这种描述准确吗?7. html - angularJS中switch切换开关按钮不能操作8. angular.js - angularjs中相同的方法,如何做到触发只对当前元素有效。9. html - angularjs中用ng-repeat生成几个radio,怎么设置radio的默认选中项?10. angular.js - angularjs中如何实现单击一个span标签之后,拿到span标签中的内容?
