单击链接时,将AngularJS$作用域变量传递给新控制器
Pass an AngularJS $scope variable to new controller when link clicked
我有一个应用程序,它使用动态路由加载模式窗口,每个窗口显示一个JSON文件中的"活动"对象。目前,我正在使用路由来确定哪张卡是可见的,然后调用数据服务来根据与路由名称的匹配来填充数据。
但我不喜欢这个解决方案,因为它将我当前的卡与数组的上下文隔离开来。我更希望能够从模板中传递card对象,因为这样我就会知道$index是什么,然后我可以使用它来导航到"prev"answers"next"元素。
如果我有这个标记:
<div ng-controller="MenuCtrl">
<ul class="menu">
<li ng-repeat="card in cards">
<a href="#/page/{{ card.shortName }}">{{ card.shortName }} </a>
</li>
</ul>
</div>
是什么触发了$routeProvider:
$routeProvider
.when('/page/:name', {
templateUrl : 'modalContainer',
controller : 'ModalContainerCtrl'
})
这就引出了这个控制器:
.controller('ModalContainerCtrl',['$scope', '$modal', '$route', function($scope, $modal, $route) {
var modalInstance = $modal.open({
templateUrl : '../assets/templates/modal.html',
controller: 'ModalCtrl'
});
$scope.activity = $route.current.pathParams.name;
console.log($scope.activity);
//Modal controls
$scope.close = function () {
console.log("close!");
$modalInstance.close();
};
}])
有没有什么方法可以通过这种路由或任何其他方式将card
对象传递给ModalContainerCtrl
?
您可以使用resolve(解析成员的定义,该成员将被解析并作为本地人传递给控制器;它相当于AngularJS路由的resolve属性)将作用域对象传递给模式窗口控制器。所以在你的情况下,它可以这样做:
.controller('ModalContainerCtrl',['$scope', '$modal', '$route', function($scope, $modal, $route) {
//your card object
$scope.card = '';
var modalInstance = $modal.open({
templateUrl : '../assets/templates/modal.html',
controller: 'ModalCtrl',
resolve: {
card: function () {
return $scope.card;
}
}
});
$scope.activity = $route.current.pathParams.name;
console.log($scope.activity);
//Modal controls
$scope.close = function () {
console.log("close!");
$modalInstance.close();
};
}])
在模态控制器中:
var ModalCtrl = function ($scope, $modalInstance,card) {
//Modal controls
//card now can be used over here
$scope.close = function () {
console.log("close!") //This will now run
modalInstance.close();
};
}
相关文章:
- 为什么不't我的变量在我的控制器中填充后在我的视图中呈现
- angularjs:访问angular控制器中的jquery变量
- 如何将一个变量从一个控制器传递到合金中的另一个控制器
- 将方法从控制器注入到未使用右变量调用的指令
- $Scope变量在HTML中不更新,尽管在控制器中不断更新
- 试图将一个局部变量传递给我的ngAside控制器
- 共享变量和多个控制器AngularJS
- 在控制器之间传递变量的最佳方式
- 控制器无法访问Angular Service变量
- 如何从jQuery设置控制器或全局变量的属性
- 为什么我们将控制器变量设置为等于“0”;这个“;在角度上
- 将外部控制器的范围变量设置为角度
- 将Scope变量作为指针发送,并在控制器外部对其进行更改
- AngularJS:如何与其他控制器共享作用域函数和变量
- AngularJS更新控制器变量并再次渲染视图
- 作用域变量未从状态父控制器继承到子控制器
- 具有范围变量的控制器不工作
- AngularJS:如何在控制器之间传递变量
- 我可以将变量控制器函数传递给指令中的函数链接吗?
- 如何使用函数将值更改为作用域中的全局变量?(“控制器”)