gpt4 book ai didi

javascript - ui-sref 被阻止访问 Controller 数据或 View

转载 作者:行者123 更新时间:2023-11-29 18:04:20 25 4
gpt4 key购买 nike

我在获取状态参数的 Controller 时遇到了一些问题。我正在使用正确的状态链接到下一个 View 。

 <td><a ui-sref="orders({customerId: cust.id})">View Orders</a></td>

在我的配置文件中,我引用了名称和路由参数的状态。我暂时注释掉了解析对象。我的目标是进入 Controller 然后传递正确的数据。 注意我正在使用 controllerAs

我最初的想法是 ({customerId: ctrl.cust.id }) 但是这并没有改变 url 路由。url 正在更改以匹配 url 名称,但没有连接到 Controller 并且没有给我 View 。

    (function() {
'use strict';

angular
.module('app.orders')
.config(config);

function config($stateProvider) {
$stateProvider
.state('orders',{
// params: {customerid: null},
url:'/customers:customerId',
templateUrl: './components/orders/orders.html',
controller: 'OrdersController',
controllerAs: 'ctrl',
resolve: {
customerFactory: 'customerFactory',
customerInfo: function( customerFactory, $stateParams) {
return customerFactory.getCustomers($stateParams.id);
}

}

************** 我的主要问题是解决。这阻止我进入下一个 Controller 。 *****************

                    resolve: {
customerId:[ '$stateParams','customerFactory', function( $stateParams, customerFactory) {
return customerFactory.getCustomers($stateParams.id);
}]
}
})
};
})();

目前我的 Controller 非常小。我只想连接到它。我检查了我的网络选项卡并查看了文件的 GET

  (function() {
// 'use strict';
angular
.module('app.orders')
.controller('OrdersController', OrdersController);

function OrdersController($stateParams) {
console.log('in');
var vm = this;
vm.title = "Customer Orders";
vm.customer = null;
}
}());

我在主 javascript 文件中引用了我的模块。

   (function () {
'use strict';

angular.module('app', ['app.services',
'app.customers',
'app.orders','ui.router']);
})();

当我注释掉 resolve 时,我可以访问 Controller 。所以我知道问题在于解决。这是我的服务。我正在使用 $http 请求并使用 .then

向 Json 文件发出请求

更新 这是我重构的服务调用,我每次都在控制台中返回正确的客户。

  (function() {
angular
.module('app.services',[])
.constant('_', window._)
.factory('customersFactory', customersFactory);

function customersFactory($http, $log) {

return {
getCustomers: getCustomers,
getCustomer: getCustomer
};
function getCustomers(){
return $http.get('./Services/customers.json',{catch: true})
.then(getCustomerListComplete)
.catch(getCustomerListFailed);

function getCustomerListComplete(response) {
console.log('response.data',response.data);
return response.data;
}

function getCustomerListFailed(error) {
console.log('error', error);
}
}

function getCustomer(id) {
var url = './Services/customers.json';
return $http.get(url, {
catch: true
})
.then(function(response) {
console.log('promise id',id);
var data = response.data;
for(var i =0, len=data.length;i<len;i++) {
console.log('data[i].id',data[i].id);
if(data[i].id === parseInt(id)) {
console.log('data[i]', data[i]);
return data[i];
}
}
})
}
}
}());

最佳答案

有一个working example with your code

很难猜出哪里出了问题。 根据我在这里给你的建议 Have a expression error in ui-sref ...您的代码似乎完全有效

我把你的东西放到这个 app.orders.js 文件中 (唯一的变化是 templateUrl 路径,只是为了 plunker 目的):

angular
.module('app.orders', ['ui.router'])


'use strict';

angular
.module('app.orders')
.config(['$stateProvider', config]);

//config.$inject = ['$stateProvider'];
function config($stateProvider) {
$stateProvider
.state('orders',{
// params: {customerid: null},
url:'/customers:customerId',
//templateUrl: './components/orders/orders.html',
templateUrl: 'components/orders/orders.html',
controller: 'OrdersController',
controllerAs: 'ctrl'
// resolve: {
// customerId:[ '$stateParams','customerFactory', function( $stateParams, customerFactory) {
// return customerFactory.getCustomers($stateParams.id);
// }]
// }
})
};


// 'use strict';
angular
.module('app.orders')
.controller('OrdersController', OrdersController);

OrdersController.$inject = ['$stateParams'];
function OrdersController($stateParams) {
console.log('in');
var vm = this;
vm.title = "Customer Orders " + $stateParams.customerId;
vm.customer = null;
}

这是工作模板components/orders/orders.html:

<div >
<h3>current state name: <var>{{$state.current.name}}</var></h3>

<h5>title</h5>
<pre>{{ctrl.title}}</pre>
...

当我这样调用它时:

<li ng-repeat="cust in [{id:1}, {id:2}]"
><a ui-sref="orders({customerId: cust.id})">View Orders - cust ID == {{cust.id}}</a>
</li>

检查 action here

关于javascript - ui-sref 被阻止访问 Controller 数据或 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32466390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com