Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传递的角度UI模式数据为空_Javascript_Angularjs_Angular Ui Bootstrap - Fatal编程技术网

Javascript 传递的角度UI模式数据为空

Javascript 传递的角度UI模式数据为空,javascript,angularjs,angular-ui-bootstrap,Javascript,Angularjs,Angular Ui Bootstrap,我试图让一个角度引导UI模式(0.14)正常工作。我可以让模态弹出(很好),但是我传递的数据对象是null(设置它时它不是null)。我看过各种各样的plukner,我看到它们是如何工作的,而我的没有;好像不行 下面,我已经操纵它来传递一些虚构的数据 (function () { 'use strict'; angular.module('MPAapp') .contr

我试图让一个角度引导UI模式(0.14)正常工作。我可以让模态弹出(很好),但是我传递的数据对象是null(设置它时它不是null)。我看过各种各样的plukner,我看到它们是如何工作的,而我的没有;好像不行

下面,我已经操纵它来传递一些虚构的数据

            (function () {
                'use strict';
                angular.module('MPAapp')
                    .controller('workCentreCtrl',
                                ['$scope', '$rootScope', 'toastrFactory', 'workCentreResource', '$uibModal', '$log',
                                 workCentreCtrl])

                function workCentreCtrl($scope, $rootScope, toastrFactory, workCentreResource, $uibModal, $log) {
                    var scope = this;

                    var slot = [{'slot1':5}, {'slotname':'dynamo'},{'OriginalSlot':5}]
                    var max = 5

// Click event from the view
                    $scope.EditWorkOrder = function () {                                    
                        var modalInstance = $uibModal.open({
                            animation: true,
                            templateUrl: '/app/WorkOrder/Views/EditWorkOrder.html',
                            controller: 'EditWorkOrderCtrl',
                            size: 'lg',
                            resolve: {
                                data:  function () {
                                    return{
                                        Slot: slot,
                                        Max: max
                                    }                    
                                }
                            }
                        });

                        modalInstance.result.then(function () {
                            $log.info('do some UI update here');
                        }, function () {
                            $log.info('Modal dismissed at: ' + new Date());
                        });

                    };
                }

            }());
            /* END PARENT CONTROLLER */

            /* --------------------------------*/

            /* MODAL INSANCE CONTROLLER BEGIN*/

            (function () {
                'use strict';
                angular.module('MPAapp')
                    .controller('EditWorkOrderCtrl', ['$scope', '$timeout', 'toastrFactory',
                        EditWorkOrderCtrl]);

                EditWorkOrderCtrl.$inject = ['$uibModalInstance', 'data']

                function EditWorkOrderCtrl($scope, $timeout, toastrFactory,  $uibModalInstance, data) {
                    var scope = this;

                    $scope.ok = function () {
                        $uibModalInstance.close(scope.Slot);
                    };

                    $scope.cancel = function () {
                        $uibModalInstance.dismiss('cancel');
                    };
                    // THIS IS WHEN DATA IS UNDEFINED.
                    scope.Slot = data.Slot;
                    scope.SlotNumber = data.Slot.OriginalSlot;
                }
            }());
以及模态实例中的HTML

<div ng-controller="EditWorkOrderCtrl as vm">
    <div class="row">
        <div class="col-md-12">
            <h2>Edit Work Order {{vm.Slot.WorkOrderNumber}}</h2>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12"><span class="main-text bold">Product:</span> {{vm.Slot.ProductCode}} -  {{vm.Slot.ProductDescription}}</div>
    </div>
    <div class="row">
        <div class="col-md-6">
            <span class="main-text bold">Size:</span> {{vm.Slot.QuantityRequired}}
            <span class="main-text bold">Time (mins):</span> {{vm.Slot.StandardRunTime}}
            <span class="main-text bold">Current Date:</span>{{vm.Slot.OriginalOrderDate | date:'dd MMM yyyy'}}
        </div>
        <div class="col-md-6"></div>
    </div>
</div>

编辑工单{{vm.Slot.WorkOrderNumber}
产品:{{vm.Slot.ProductCode}-{{vm.Slot.ProductDescription}
大小:{{vm.Slot.QuantityRequired}
时间(分钟):{vm.Slot.StandardRunTime}
当前日期:{{vm.Slot.OriginalOrderDate}日期:'dd MMM yyyy'}

非常感谢您的帮助。我对Angular还是个新手,在某些领域,这是一个难题,但我喜欢它

当然
数据
不会像这样可用(但它不是
空的
,而是
未定义的
)。你的依赖注入搞砸了。注意,您在
$inject
数组中描述的内容必须与传递给控制器函数的形式参数相对应

在使用此配置的情况下:

EditWorkOrderCtrl.$inject = ['$uibModalInstance', 'data']
function EditWorkOrderCtrl($scope, $timeout, toastrFactory,  $uibModalInstance, data) {}
您告诉Angular将
$uibModalInstance
作为
$scope
注入,并将
数据作为
$timeout
注入。显然不是你想要的

正确的注射应该像

EditWorkOrderCtrl.$inject = ['$scope', '$timeout', 'toastrFactory',  '$uibModalInstance', 'data'];
function EditWorkOrderCtrl($scope, $timeout, toastrFactory,  $uibModalInstance, data) {}
或者,您可以使用数组表示法作为控制器定义:

.controller('EditWorkOrderCtrl', ['$scope', '$timeout', 'toastrFactory', 'workCentreResource', 'blockedDatesResource', 'data', EditWorkOrderCtrl]); 
但在这种情况下,请确保不要使用
EditWorkOrderCtrl.$inject=['$uibModalInstance']
。删除它,因为它有更高的优先级,正如我上面解释的,它是混乱的


还可以看看这个,我在这里提供了关于不同注入方法的详细解释。

我没有尝试,但是如果在控制器定义中包含“数据”,并将其从设置为EditWorkOrderCtrl的数组中删除,会怎么样。$inject?正是我要说的。有$inject的东西看起来很有趣。遗憾的是,它仍然是空的。这就是它现在的设置方式。控制器('EditWorkOrderCtrl'、['$scope'、'$timeout'、'toastrFactory'、'WorkcenterResource'、'blockedDatesResource'、'data',EditWorkOrderCtrl]);EditWorkOrderCtrl.$inject=['$uibModalInstance']函数EditWorkOrderCtrl($scope、$timeout、toastrFactory、workCentreResource、blockedDatesResource、$uibModalInstance、data){var scope=this;scope.Slot=data.Slot;感谢这个指针,我不会再这样做了,是的,它是未定义的。这是我的controller.controller('EditWorkOrderCtrl',['$scope','$timeout','toastrFactory','WorkCentrerSource','blockedDatesResource','data',EditWorkOrderCtrl]);函数EditWorkOrderCtrl($scope,$timeout,toastrFactory,workcenteresource,blockedDatesResource,data,$uibModalInstance){var scope=this;…}}();现在我在数组中得到一个关于数据对象的错误。bold[$injector:unpr]未知提供程序:数据提供程序Remove
ng controller=“EditWorkOrderCtrl as vm”
从HTML模板中,您不需要它,因为模板已经绑定到模式配置中的控制器。然后,如果您需要
vm
前缀,请将
controllerAs:'vm'
添加到模式配置中。您这个小美人@dfsq,完成了。我想这是我唯一没有尝试过的事情了!谢谢。