javascript – 有可能使用angularJs将状态从状态传递到状态吗?

栏目: 编程语言 · AngularJS · 发布时间: 5年前

内容简介:http://stackoverflow.com/questions/38814175/is-it-possible-to-pass-param-from-state-to-state-with-angularjs

我希望通过一个商店状态的参数到产品状态的显示产品信息:

我的应用 – storeApp

.config(['$stateProvider', function($stateProvider) {
$stateProvider
    .state('store', {
        url: '/store',
        templateUrl: 'store/store',
        controller: 'storeCtrl'
    })
    .state('products', {
        url: '/products/:productSku',
        templateUrl: 'store/product',
        controller: 'productCtrl',
        resolve: {
                productResource: 'productFactory',
                _product: function(productResource, $stateParams){
                return productResource.getProduct($stateParams.productSku);
                    }
                }

Store.jade

a(href='/products/{{product.sku}}')

产品控制器

.controller("productCtrl", function ($rootScope, $http, $stateParams, productFactory, storeFactory) {
//.controller('productCtrl', ['_product', function ($scope, $rootScope, storeFactory, _product) {

console.log($stateParams.productSku);

产品厂

function getProduct(sku) {
    return $http.get('http://localhost:3000/api/products/' + sku );
}

由于我正在使用MEAN Stack,所以节点有路由器表示:

Server.js

const storeController = require('./controllers/store');
server.get('/store/product', passportConfig.isAuthenticated, storeController.getProductPage);

Store.js

exports.getProductPage = (req, res) => {
    res.render('store/product', {
        title: 'PP',
        angularApp: 'storeApp'
    })
}

我尝试返回_product,但是我收到了未知的提供者:_productProvider<- _product<- productCtrl 我尝试在store.jade中使用ui-sref – a(ui-sref =“products({productSku:'{{product.sku}}’})”)将param从store_State发送到products_State&终于从API得到了一个对象. 现在的问题是节点不会返回视图. 基本上我想要实现的是:

节点服务客户端视图,所有商店视图 – 商店/产品/购物车附加到通过Server.js提供的角度应用程序,点击商店产品将从api解析产品信息后重定向到产品页面.

我得到产品信息,但没有获得产品视图.

我看了看,但所有的解决方案都没有工作….也许我的坏:-(

我该怎么办?

更新1:这是发生了什么:

javascript – 有可能使用angularJs将状态从状态传递到状态吗?

更新2:

当我将控件传递给角度时,我有快速路由菜单,并且角状态提供路由/连接视图到控制器.

主要观点是负载是商店本身:

app.js – 商店路线

$stateProvider
    .state('store', {
            url: '/store',
            templateUrl: 'store/store',
            controller: 'storeCtrl'
    })

server.js(express)

server.get('/store', passportConfig.isAuthenticated, storeController.getStorePage);

store.js

exports.getStorePage = (req, res) => {
    res.render('store/store', {
        title: 'S--tore',
        angularApp: 'storeApp'
    });
}

store.ctr.js

angular.module("storeApp")
.controller("storeCtrl", function($rootScope, $http, storeFactory) {

    var products;

    storeFactory.getProducts().then(function(_products) {
        products = _products.data;
        $rootScope.products = products;
    });

那加载很好!

但是当我尝试将param productSku从商店视图发送到产品视图,并将解决方案发送到产品视图,停止工作时,它是我得到的视图,或者我得到参数.

javascript – 有可能使用angularJs将状态从状态传递到状态吗?

我尝试了不同的解决方法,它们都是相同的 – 查看OR产品参数.

app.js – 产品路线

.state('products', {
    url: '/products/:productSku',
    templateUrl: 'store/product',
    controller: 'productCtrl',
    resolve: {
        _product: function ($stateParams, $state, $http) {
        return $http.get('http://localhost:3000/api/products/' + $stateParams.productSku );
        //return productResource.getProduct($stateParams.productSku)
        }
    }
})

如果我从store.jade中删除解决方案并发送一个(href =’/ products / {{product.sku}}’),我得到路由中的模板,我得到的chrome控制台错误是“错误:$inject:unpr未知Provider _product<- productCtrl product.ctr.js

.controller('productCtrl', ['_product', function ($rootScope, $http, $stateParams, productFactory, storeFactory, _product) {

如果我发送(ui-sref =“products({productSku:product.sku})”),我将得到产品参数(在上面的WebStorem快照中显示)NO视图.

角度不会加载玉模板,您将需要一个html模板,玉模板由快递加载.你可能想尝试使用ui-view这样:

Store.jade

div(ui-view)
  a(href='/products/{{product.sku}}')

在加载路由时,应该查找未命名的视图.

你的templateUrl不要指向文件,也许你缺少文件扩展名?

确保您返回$promise解决方案,因为ui-router等待,直到它们在呈现视图之前得到解决.

我建议在路由中使用相应的配置命名视图:

.state('store', {
    url: '/store',
    views: {
        '@': {
            templateUrl: 'store/store.html',
            controller: 'storeCtrl'
        }
    }
})
.state('products', {
    url: '/products/:productSku',
    templateUrl: 'store/product',
    controller: 'productCtrl',
    resolve: {
        _product: function ($stateParams, $state, $http) {
            return $http.get('http://localhost:3000/api/products/' + $stateParams.productSku ).$promise;

    }
}

})

请参阅这里的文档: https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views

http://stackoverflow.com/questions/38814175/is-it-possible-to-pass-param-from-state-to-state-with-angularjs


以上所述就是小编给大家介绍的《javascript – 有可能使用angularJs将状态从状态传递到状态吗?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

电子邮件营销密码

电子邮件营销密码

[美] Jeanniey Mullen、David Daniesl / 薛剑韬 / 人民邮电出版社 / 2009-9 / 39.00元

在当今互联网蓬勃发展的形势下,电子邮件是互联网应用最广的服务之一。那么如何利用其作为有效的营销工具呢?本书系统地讲解了美国电子邮件营销的预算统筹、营销策略、管理模式、执行机制、涉及的技术、营销实施的细节等,其方法有很强的可循性,并可预见将获得的成果。阅读本书之后,读者会深刻感受到电子邮件营销的博大精深,它既是一门扎实严谨的科学,又是一项充满创造力的艺术。. 本书适合企业管理人员及市场营销人员......一起来看看 《电子邮件营销密码》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

html转js在线工具
html转js在线工具

html转js在线工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换