2014-09-19 95 views
0

使用angularjs UI我試圖將參數傳遞給我的模態。

事情是,項目是未定義的。我檢查了文檔等,我沒有得到我在這裏做錯了。

控制器 'newproject' 是一個調用下面的代碼:

var modalInstance = $modal.open({ 
       templateUrl: 'app/projects/createTask.html', 
       controller: 'createtask as vm', 
       resolve: { 
        item: function() { 
         return 'itemValue'; 
        } 
       } 
      }); 

裏面 '的CreateTask' 控制器我有以下代碼(顯示在這裏開始):

(function() { 
     'use strict'; 

     var controllerId = 'createtask'; 

     angular.module('app').controller(controllerId, 
      ['common', '$modalInstance', createtask]); 

     function createtask(common, $modalInstance, item) { 
     //why is item is undefined here?!?!?! 

請注意,'newproject'控制器位於'newProject.js'內,'createtask'控制器位於createTask.js。

爲了完整性起見,這裏是完整的控制器:

newProject.js:

(function() { 
    'use strict'; 

    var controllerId = 'newproject'; 

    angular.module('app').controller(controllerId, 
     ['$location', '$modal', '$routeParams', '$window', 'common', 'config', 'datacontext', 'utility', projectdetails]); 

    function projectdetails($location, $modal, $routeParams, $window, common, config, datacontext, utility) { 
     var vm = this; 

     function editTask(task) { 
      var modalInstance = $modal.open({ 
       templateUrl: 'app/projects/createTask.html', 
       controller: 'createtask as vm', 
       resolve: { 
        item: function() { 
         return 'itemValue'; 
        } 
       } 
      }); 

      modalInstance.result.then(function (newTask) { 
       task = newTask; 
       vm.projectCost += newTask.cost; 
      }); 
     } 
    } 
})(); 

createTask.js:

(function() { 
    'use strict'; 

    var controllerId = 'createtask'; 

    angular.module('app').controller(controllerId, 
     ['common', '$modalInstance', 'item', createtask]); 

    function createtask(common, $modalInstance, item) { 

     if (item) { 
      alert(item); 
     } else 
      alert('undefined'); 
    } 

})(); 
+1

您還需要列出項目以及依賴列表中。您在dep列表中的參數個數必須與構造函數中的參數個數相匹配。錯字? – PSL 2014-09-19 15:20:01

+0

@PSL 每當我將'item'添加到依賴關係數組中時,我會收到一個錯誤,提示「unknown provider:itemprovider」。 – 2014-09-19 15:31:26

+0

當你打開一個模式? – PSL 2014-09-19 15:33:53

回答

4

嘗試增加 '項目' 到陣列在你的控制器定義中:

angular.module('app').controller(controllerId, 
     ['common', '$modalInstance', 'item', createtask]); 
+0

每當我添加'項目'的依賴關係的數組時,我得到一個錯誤,說:「未知的提供者:itemprovider」。 – 2014-09-19 15:31:01

+0

你可以顯示createTask.html嗎? – sma 2014-09-19 15:34:17

+0

當然,更新了我的問題。 請注意,我還沒有使用'item'。 – 2014-09-19 15:38:01

2

我有同樣的問題,我發現該項目是未定義的,因爲沒有初始值。

$scope.showDialog = function() { 
    var aModalInstance = $modal.open({ 
     templateUrl: "yourPage.html", 
     controller: "yourModalCtrl", 
     resolve: { 
      item: function() { 
       **return null;// get an undefined error message** 
       **return {firstName:"Superman"} // this one should be ok**     
      } 
     } 
    }); 

    aModalInstance.result.then(function (val) { 
     //not important 
    }, function() { 
     $log.info('Modal dismissed at: ' + new Date()); 
    }); 
}; 

    ==> 

app.controller("yourModalCtrl", function ($scope, $modalInstance, item) {    
    $scope.firstName = item.firstName;  

    $scope.ok= function() { 
     $modalInstance.close({firstName:$scope.firstName}); 
    }; 

    $scope.cancel = function() { 
     $modalInstance.dismiss('cancel'); 
    }; 
}); 
相關問題