0
$ routeProvider의 resolve 메서드에서이 경로에 사용할 컨트롤러로 변수를 전달하려고합니다. 하지만 개체가 해결되고 있지만 컨트롤러가 개체의 해상도까지 기다리지 않습니다. Route Provider를 통해 경로에서 Controller로 개체 전달 resolve
app.config(["$locationProvider", "$routeProvider", "$httpProvider", function ($locationProvider, $routeProvider, $httpProvider) {
$locationProvider.hashPrefix('');
.when("/EditProduct/:id",
{
templateUrl: "App/Products/editProductView.html",
controller: "EditProductCtrl as vm",
resolve: {
product: function (productsResource, $route, $routeParams) {
console.log($route.current.params.id);
return productsResource.getProductById().get({ id: $route.current.params.id }, function (data) {
console.log("inside the resolved function");
console.log(data.Name);
return data;
})
}
}
})
.otherwise({ redirectTo: "/" });
이 때문에 app.js 문에서 이름으로 로그 메시지가 표시됩니다 : 여기 내가 사용하고있는 코드에서 조각입니다. 컨트롤러로 주입 아마 분해 생성물을 보유하면서 다음과
(function() {
"use strict";
angular.module("ProductManagementTool").controller("EditProductCtrl", ["product","productsResource", "currentUser", EditUserCtrl]);
function EditProductCtrl(product, productsResource, currentUser) {
var editCtrlViewModel = this;
console.log("the full name is " + product.Name);
editCtrlViewModel.product = product;
editCtrlViewModel.title = "Edit: " + product.Name;
}
}());
제어부에 로그 메시지가 정의되지 않은 것으로 도시되어있다.
각도 js 1.6.1을 사용하고 있습니다.
감사합니다. 하지만 내가 예상했던 것은 컨트롤러가 개체가 먼저 해결 될 때까지 초기화되지 않는다는 것입니다. 최근에 업데이트 되었습니까 ??? – user1874288
@ user1874288 당신은 맞습니다 만, 객체는 "해결"됩니다. 즉, 반환 값 ('return productsResource.getProductById()')을 반환하고 promise를 반환하고 약속이 별도로 해결됩니다. 예를 들어'return $ route.current.params.id '와 같이'productId'를 삽입해야한다면'Promise가 아니므로 "추가 해결"이 필요하지 않습니다. –