Angularjs ui bootstrap模态共享信息到同一个控制器

时间:2015-05-13 16:00:13

标签: javascript angularjs angular-ui-router angular-ui-bootstrap

我在cloud控制器中设置了以下模式。我不会给这个模态一个特定的控制器来解决问题,因为我的目标是与我的云控制器共享它。

我不告诉模态它应该使用云控制器,因为控制器将运行两次,我不希望这种情况发生。

.config(function($stateProvider, $urlRouterProvider, $locationProvider) {

    $stateProvider
        .state('cloud', {
            url: '/cloud',
            controller: 'cloud',
            templateUrl: 'pages/templates/cloud.html'
        })
})

.controller('cloud', function($scope, $rootScope, $http, $state, $stateParams, $modal) {

    $scope.toggleModal = function () {
        $scope.renameModal = $modal.open({
            animation: true,
            templateUrl: 'pages/templates/modal.html',
            size: "md",
            scope: $scope
        });
    }

    $scope.submit = function(data) {
        console.log($scope.inputData, data);
    }

})

我想解决的问题是我的模态模板中有一个输入框。我正在尝试提交文本,让它共享,并希望更新到云控制器内的$scope变量之一。

下面您可以看到我的 modal.html 在提交时,它在我的云控制器中运行submit()功能。它运行成功,但控制台日志返回$scope.inputDatadata undefined

<div class="modal-header">
    <h3 class="modal-title">title</h3>
</div>
<div class="modal-body">
    <input type="text" id="rename_item" ng-modal="inputData" value="" />     
</div>
<div class="modal-footer">
    <button class="btn_submit fade" ng-click="submit(inputData)">Rename</button>
</div>

任何人都可以帮我弄清楚我做错了什么,或者我如何将这些数据传递给我当前的云控制器?

1 个答案:

答案 0 :(得分:1)

BIG 向camden_kid发送错误信息,以便发现错误拼写错误ng-model。我不小心做了 ng-modal

虽然纠正拼写并没有修复它。

我不知道为什么(也许有人可以帮忙解释),但我必须使用已经创建的对象才能使其工作。只使用预先定义的变量并不起作用。

所以这是我对云控制器的更改:

.controller('cloud', function($scope, $rootScope, $http, $state, $stateParams, $modal) {

    $scope.toggleModal = function () {
        $scope.renameModal = $modal.open({
            animation: true,
            templateUrl: 'pages/templates/modal.html',
            size: "md",
            scope: $scope
        });
    }

    $scope.inputText = {data: ""};
    $scope.submit = function(data) {
        console.log($scope.inputText.data);
    }

})

然后我对我的html执行了以下操作:

<input type="text" ng-modal="inputText.data" />