带有 AngularJs 的 Ionic 框架:模态是不是可以与启动模态的视图具有相同的控制器?
Posted
技术标签:
【中文标题】带有 AngularJs 的 Ionic 框架:模态是不是可以与启动模态的视图具有相同的控制器?【英文标题】:Ionic framework with AngularJs : Can a modal have the same controller as the view that launches the modal?带有 AngularJs 的 Ionic 框架:模态是否可以与启动模态的视图具有相同的控制器? 【发布时间】:2014-03-19 08:26:05 【问题描述】:我正在尝试为复杂对象构建多步表单。我使用模态分割表单的一部分。我能找到的 Ionic 示例似乎为模态分配了不同的控制器。我想保留视图以及它启动的所有模式,所有这些都与一个控制器相关联。那可能吗?我尝试分配给模态视图 ng-controller="viewCtrl" ,其中 viewCtrl 也是启动模态的起始视图的控制器,但它似乎以高 CPU 挂起 chrome,这随后需要杀死 chrome 选项卡。(某种通过调用同一个控制器的循环效果??) 欢迎您的建议/见解。
【问题讨论】:
【参考方案1】:我假设你的模态是一个指令。 我还假设您已将其放置在视图(控制器范围)内。
如果上述内容正确,则指令从父控制器继承 $scope 属性和方法(角度中的一般事物),除非您的指令具有隔离范围(如果您将指令中的范围属性设置为任何值但错误)。
如果您的指令具有隔离范围,您仍然可以使用指令上的属性从父级传递数据。如果您想将指令中的某些内容传递给父级,您可以使用 $emit。 您也可以使用 $parent 从指令中访问父级,但我建议不要这样做。
【讨论】:
+1 感谢您的回复,您的 cmets 帮助我将注意力转向范围继承。标志性的框架将 modal 实现为一种服务,它可以选择范围继承。我将在单独的答案中添加细节以供其他人将来参考。 @CAT 根据您的解释,我得到了 $scope 部分,但是我将如何设置我想要成为模态控制器的控制器(因为我想要一个不同于控制器的控制器称为模态)。 @RafaelEyng 我不确定我是否明白你的意思,但如果你希望你的模态指令拥有自己的控制器,你只需在创建指令时使用“控制器:MyModalController”属性.您也可以在指令的根元素上添加 ng-controller="MyController" 并创建该控制器......它基本上是一样的。如果这不是您要问的问题,可以创建一个包含更多详细信息的新问题,如果可以的话,我很乐意提供帮助。 @CAT 我已经下载了一个 Ionic 模板并开始在它之上开发我的应用程序。它有一个登录模式,使用:$ionicModal.fromTemplateUrl(url, scope: $scope).then(/* ... */)
调用。我有一些视图想要显示为我的应用程序的正常部分,并在应用程序的另一部分使用与模式相同的视图。当将这些视图用作非模态视图时,我使用它和 browserify,angular.module('app.customer, []).controller('CustomerCtrl', require('./CustomerController'))
来设置控制器。但是当将它用作模态(在第一个 sn-p 中调用)时,...
我的模态控制器是调用模态视图的同一个控制器。因此,我需要将模态的控制器设置为 CustomerCtrl(在我上面的示例中)。所以我不明白当它是模态时如何使用ng-controller="CustomerController
来设置它,因为当它不是模态时我也不设置它。我不认为我的问题很清楚,对此我很抱歉。这是我对此感到困惑的结果。以上是关于带有 AngularJs 的 Ionic 框架:模态是不是可以与启动模态的视图具有相同的控制器?的主要内容,如果未能解决你的问题,请参考以下文章
WebApp开发框架Ionic+AngularJS+Cordova