2017-03-02 15 views
0

Webサイトを開発したいと思います。 URLにクエリ文字列があるときは$ uiModalを開きたいクエリ文字列がない場合、モーダルはoepnではありません。コードは次のとおりです。urlにqueryStringがあるときにangularJSモーダルを開く方法

myApp.controller('jobObjectiveController', ['$scope', '$http', '$uibModal', 'EmployeeObjectiveService', '$routeParams', function ($scope, $http, $uibModal, EmployeeObjectiveService, $routeParams) { 

$scope.init = function() { 
    $scope.AddButton = 'Save'; 
    $scope.isProcessing = false; 
    $scope.UpdateButton = 'Update'; 
} 

var id = $routeParams.id; 


var items = []; 
for (i = 0; i <10; i++) { 
    items[i] = i; 
} 
$scope.test = items; 

$scope.Objective = { 
    Title: '', 
    KPI: '', 
    Target: '', 
    Weight: '', 
    Note:'' 
} 

$scope.init(); 

//Column Selection 
EmployeeObjectiveService.GetObjectiveColumnList().then(function (response) { $scope.ColumnList = response.data }); 
EmployeeObjectiveService.GetObjectiveSeletedColumnList().then(function (response) { $scope.SelectedColumn = response.data }); 
EmployeeObjectiveService.GetObjectiveSeletCol().then(function (response) { $scope.selectCol = response.data}); 

//Change Events for Multiple dropdown 
$scope.changeEvents = { 
    onItemSelect: function (item) { 
     changeColumnViewShow(item); 
    }, 
    onItemDeselect: function (item) { 
     changeColumnViewShow(item); 
    } 
}; 

function changeColumnViewShow(item) { 
    if (item.id == 1) { 
     $scope.selectCol.Code = !$scope.selectCol.Code; 
    } else if (item.id == 2) { 
     $scope.selectCol.Title = !$scope.selectCol.Title; 
    } else if (item.id == 3) { 
     $scope.selectCol.KPI = !$scope.selectCol.KPI; 
    } else if (item.id == 4) { 
     $scope.selectCol.Target = !$scope.selectCol.Target; 
    } else if (item.id == 5) { 
     $scope.selectCol.Weight = !$scope.selectCol.Weight; 
    } else if (item.id == 6) { 
     $scope.selectCol.Note = !$scope.selectCol.Note; 
    } else if (item.id == 7) { 
     $scope.selectCol.Status = !$scope.selectCol.Status; 
    } 
} 

//Multiple Dropsown Config 
$scope.dropConfig = { 
    scrollable: true, 
    scrollableHeight: '200px', 
    showCheckAll: false, 
    showUncheckAll: false 
} 

//Group by Pending and Approve 
EmployeeObjectiveService.getGroupItem().then(function (response) { $scope.GroupBy = response.data }); 

//Open Modal for Add Objective 
$scope.addObjective = function() { 
    var modalInstance = $uibModal.open({ 
     templateUrl: '/View/Modal View/addObejective.html', 
     controller:'jobObjectiveController', 
     scope: $scope, 
     size: 'lg' 
    }); 
} 

//Open Modal for View Objective 
$scope.viewObjective = function (data) { 
    var modalInstance = $uibModal.open({ 
     templateUrl: '/View/Modal View/ObejectiveModal.html', 
     controller: 'jobObjectiveController', 
     scope: $scope, 
     size: 'lg', 
    }); 
} 

//Open Modal for Update Objective 
$scope.updateObjective = function (data) { 
    $scope.Object = { 
     Title: 'xgdsg', 
     KPI: 'sgsg', 
     Target: 'sgsg', 
     Weight: 'sgsgggggg', 
     Note: data 
    } 
    var modalInstance = $uibModal.open({ 
     templateUrl: '/View/Modal View/updateObejectiveModal.html', 
     controller: 'jobObjectiveController', 
     scope: $scope, 
     size: 'lg' 
    }); 
} 


//Add the Objective 
$scope.AddObjective = function (data) { 
    $scope.AddButton = 'Saving...'; 
    $scope.isProcessing = true; 
    if (!data) { 
     alert("Submitting..."); 
     $scope.init(); 
    }else 
     $scope.init(); 

} 

//Update Objective 
$scope.UpdateObjective = function (data) { 
    $scope.UpdateButton = 'Updating...'; 
    $scope.isProcessing = true; 
    if (!data) { 
     alert("Submitting..."); 
     $scope.init(); 
    } else 
     $scope.init(); 

} 

if (id != null) { 
    $scope.viewObjective(id); 
} 

私は、クエリ文字列を使用してコードを実行すると、これらのエラー

TypeError: Cannot read property 'length' of undefined 
at m.$scope.getButtonText (angularjs-dropdown-multiselect.min.js:1) 
at fn (eval at compile (angular.min.js:1001), <anonymous>:4:230) 
at angular.min.js:534 
at m.$digest (angular.min.js:600) 
at m.$apply (angular.min.js:610) 
at l (angular.min.js:397) 
at J (angular.min.js:417) 
at XMLHttpRequest.t.onload (angular.min.js:420) 
+0

をモーダル

のopenメソッドを呼び出して参照することができるようにTERSはその後

// given URL http://example.com/#/some/path?foo=bar&baz=xoxo var searchObject = $location.search(); // => {foo: 'bar', baz: 'xoxo'} // set foo to 'yipee' $location.search('foo', 'yipee'); // $location.search() => {foo: 'yipee', baz: 'xoxo'} 

あなたがそれを取得し、initメソッドで状態を保つことができるこの方法を使用するのいずれかをしましたあなたのニーズに答える?そうであれば、回答を受け入れたものとしてマークしてください。そうでなければコメントを残してください。 – trincot

答えて

0

あなたが使用してURLが変更に耳を傾け、モーダルを開くためのクエリ文字列がある確認する必要があります示しています。

$rootScope.$on("$routeChangeStart", function(args){})

0

あなたは、ルートのparamsを使用しているかどうかを確認し、その後、それはあなたがクエリ文字列parameを送信している場合は、他の賢明なのIDを取得することが正しいですパラメータIDが、その後がある場合、あなたはAngular $location

関連する問題