我在该视图中有一个控制器名称为"Listctrl"
的视图,我想使用另一个名为"LocationCtrl"
的控制器。目前,我这样做是这样的:
路由
.state('list', {
url: '/list',
templateUrl: 'templates/list.html',
controller: "ListCtrl",
cache: false
})
HTML(list.html)
<ion-view ng-init="ini()" ng-controller="LocationCtrl">
<ion-header-bar class="banner-top ext-box" align-title-h="left">
<div class="int-box2"><h2 id="s_back1">STORIE</h2></div>
</ion-header-bar>
<ion-content class="has-header has-footer no-bgColor start" overflow-scroll="false" has-bouncing="false">
<div class="container-list">
我应该如何正确解决这个问题?我需要两个控制器用于同一视图,但是在不同的地方,因为我想在不同的视图中重用控制器代码。
目前
<ion-view ng-init="ini()" ng-controller="LocationCtrl">
不运行
LocationCtrl
任何帮助,不胜感激!
最佳答案
一个视图不可能有两个控制器,因为这没有意义。如果您具有应共享的功能,请使用控制器继承,但是仅当LocationCtrl
将其方法添加到$scope
时才有可能:
var app = angular.module('angularjs', []);
app.controller('LocationCtrl', function($scope) {
// I have functionality to share
});
app.controller('ListCtrl', function($scope, $controller) {
$controller('LocationCtrl', {$scope: $scope}); // This adds properties to ListCtrl's scope
});
另一种方法是将
ng-controller="LocationCtrl"
放在包装div中:<ion-view ng-init="ini()">
<div ng-controller="LocationCtrl">
<ion-header-bar class="banner-top ext-box" align-title-h="left">
<div class="int-box2"><h2 id="s_back1">STORIE</h2></div>
</ion-header-bar>
但这似乎不是一个好选择。更好的方法是使用
LocationCtrl
上定义的功能创建组件/指令,并在您的视图中的某处使用它:<ion-view ng-init="ini()">
<component-with-location-ctrl-functionality></component-with-location-ctrl-functionality>