AngularJS中的路由更改和控制器继承
Route changing and controller inheritance in AngularJS
我有两个问题:
-
我有一个表单。用户按下保存按钮后,会向服务器发出一个put请求。响应包含新对象的id。现在我想将路由从test.com/object更改为test.com/object/1。由于我已经掌握了所有信息,我不想再次运行控制器(这会再次从服务器加载对象,但这是无用的)短版本:如何在不重新加载控制器的情况下更改路线?如果这是不可能的,哪种方法是最好的
-
我有两个控制器,它们非常相似。一个很好的例子是createObject和editObject控制器。我想分享几乎所有的功能,但有一些控制器特定的方法不同。我喜欢服务,但在这种情况下,我看不到太大的优势,因为我不想只分享逻辑,我想分享事件处理程序本身的定义短版本:哪种方法可以为控制器创建继承
我期待着答案和好主意!非常感谢!
干杯
更改路线而不更改视图(或控制器)的典型(内置)角度方法是仅通过$location.search('someSearchParam', searchParamValue)
更改URL的搜索部分。reloadOnSearch必须设置为false
才能正常工作。当URL更改时,会广播事件$routeUpdate,因此您的控制器可以侦听此事件以了解某些内容已更改。另请参阅AngularJS分页$location.path但没有ngView重新加载
控制器继承可能不是一个好主意。您可以使用一个控制器和ng-show/hide来显示页面的"创建"或"编辑"版本,如$scope属性所示,例如$scope.editMode:
<div>
<span ng-show="editMode">Edit Object</span>
<span ng-hide="editMode">Create Object</span>
</div>
<div>Name: <input type="text" ng-model="name"></div>
...
<div>
<input type="submit" ng-show="editMode" ng-click="update()">Update
<input type="submit" ng-show="editMode" ng-click="create()">Create
</div>
如果您确实想尝试控制器继承,请注意作用域是继承的,而不是控制器。控制器作用域原型通常从其父作用域继承。有关此主题的更多信息,请参阅AngularJS中范围原型/原型继承的细微差别是什么?
谢谢Mark,你帮了我很多!
路线变更并不能让我真正满意,但我认为这是目前唯一的办法。在我看来,应该可以在不重新加载任何控制器的情况下更改路线,而不仅仅是参数。希望这将在未来的版本中成为可能!
- 从控制器继承了隔离的作用域以生成可重用的指令
- 当使用控制器作为语法时,如何从父指令继承属性
- 移动和桌面视图的角度控制器继承
- 作用域变量未从状态父控制器继承到子控制器
- 角控制器作为vm继承
- AngularJS中的控制器/指令继承
- Angular js 从一个控制器从另一个控制器继承属性
- 使用 Restangular 保持 CRUD 干燥:指令、继承控制器或包装服务
- $scope不会使用点表示法从控制器注入/继承到指令
- 角度指令控制器作用域继承
- 如何使用“继承”从基本控制器继承;控制器为“;语法
- AngularJS中具有ui视图的根控制器的继承变量
- Angularjs的Typescript控制器继承和依赖注入
- Angular UI中的子视图路由器和控制器继承
- 控制器继承在AngularJS中是一个好习惯吗?
- 控制器继承在angularjs中是如何工作的
- 当我使用别名时,AngularJS中的控制器继承不起作用
- 有没有一种方法可以让子控制器继承服务呢?从其父节点获取
- 角度控制器继承作用域问题
- AngularJS中的路由更改和控制器继承