GVKun编程网logo

为什么我的 Cart.js 没有呈现?反应路由器(cart无效怎么办)

14

本文将带您了解关于为什么我的Cart.js没有呈现?反应路由器的新内容,同时我们还将为您解释cart无效怎么办的相关知识,另外,我们还将为您提供关于angularjs–为什么我的角度服务值没有更新我的

本文将带您了解关于为什么我的 Cart.js 没有呈现?反应路由器的新内容,同时我们还将为您解释cart无效怎么办的相关知识,另外,我们还将为您提供关于angularjs – 为什么我的角度服务值没有更新我的范围?、css – 为什么禁用的文本元素在Safari中没有呈现为黑色?、html – 为什么我的favicon没有出现?、node.js – 为什么我的Passport auth函数在路由中调用时没有执行?的实用信息。

本文目录一览:

为什么我的 Cart.js 没有呈现?反应路由器(cart无效怎么办)

为什么我的 Cart.js 没有呈现?反应路由器(cart无效怎么办)

如何解决为什么我的 Cart.js 没有呈现?反应路由器?

我试图在用户访问 Carrito.js 时呈现我的 /carrito 组件,但该组件未呈现。我尝试使用 <Link to=''/carrito /> Carrito </Link> 和锚标记,但它们都没有呈现它。

<Router>
        <Route
          path="/tienda"
          exact
          component={({ history }) => <Productos history={history} />}
        />
        <Route
          path="/carrito"
          component={({ history }) => <Carrito history={history} />}
        />
</Router>

如果您需要其他任何信息,我可以提供任何信息

编辑:

如果我在 <Carrito /> 所在的位置渲染 <Productos />,它会显示组件,因此它可能是 Route 的问题

解决方法

出于某种原因,我刚刚添加了 <Switch></Switch> 中的 react-router-dom,并在其中添加了路由,现在全部呈现。

<Router>
        <Navbar />
        <Switch>
          <Route path="/tienda">
            <Productos />
          </Route>
          <Route path="/carrito">
            <Carrito />
          </Route>
        </Switch>
      </Router>

angularjs – 为什么我的角度服务值没有更新我的范围?

angularjs – 为什么我的角度服务值没有更新我的范围?

我有 this simple jsfiddle,它演示了我认为是一个动态服务值,可以被注入它的任何控制器监视.这是角度代码:

var app = angular.module("application",[]);

app.service("valueSetter",function(){
    that = this;
    this.serviceValue = {count: 1};
    this.updatevalue = function(){
        that.serviceValue.count = that.serviceValue.count + 1;
        console.log(that.serviceValue);
    };
});

app.controller("appcontroller",function($scope,valueSetter){
    $scope.scopeValue = valueSetter.serviceValue.count; 
    $scope.update = function(){
        valueSetter.updatevalue();
    };
});

而且HTML很简单:

<div ng-app="application" ng-controller="appcontroller">    
    Scope value is: {{scopeValue}}<br /><br />
    <input type="button" value="update" ng-click="update()" />
</div>

如果您观察控制台,则可以看到服务值增量,但增量值不会反映在控制器范围中.我误解了这应该如何运作?

解决方法

您无法绑定到这样的服务变量,但您可以绑定到服务功能.在服务中添加一个getter:

this.getValue = function(){
    return that.serviceValue;
}

将控制器中的scopeValue分配给getter:

$scope.scopeValue = valueSetter.getValue;

像这样绑定:

Scope value is: {{scopeValue()}}

编辑

您还可以将valueSetter服务分配给控制器中的$scope变量:

$scope.valueSetter = valueSetter;

像这样绑定:

Service value is: {{valueSetter.serviceValue}}

Demo

编辑2

您还可以将服务中的this.serviceValue更改为对象,如下所示:

this.serviceValue = {value: 1};
this.updatevalue = function(){
    that.serviceValue.value = that.serviceValue.value + 1;
    console.log(that.serviceValue.value);
};

在您的控制器中,像这样分配scopeValue:

$scope.scopeValue = valueSetter.serviceValue;

然后像这样绑定:

Scope value is: {{scopeValue.value}}

Demo

关键是如果服务中的属性是一个原语(本质上是一个字符串,数字或布尔值),当你将它分配给一个范围变量时,你只是制作一个值的副本,它没有回链接服务.如果服务属性是一个对象,那么当您将其分配给范围变量时,您将复制对服务属性的引用,从而为您提供所需的绑定.

css – 为什么禁用的文本元素在Safari中没有呈现为黑色?

css – 为什么禁用的文本元素在Safari中没有呈现为黑色?

我试图让禁用的输入元素内的文本以黑色显示.这适用于大多数浏览器:
input[type="text"][disabled],input[type="text"]:disabled {
  color: #000000;
}

但是,在Safari(版本6.0.2)中,文本稍微亮一些.最让我困惑的是,当我在浏览器中选择文本并在我的控制台上查找元素信息时,它清楚地显示:

rgba(0,0)

所以在代码中它是黑色的,但它仍然以黑色以外的东西呈现.这怎么可能?

这是Safari的错误吗?

感谢您对此事的任何帮助.

解决方法

尝试:

-webkit-text-fill-color: #000000;

这适用于Safari 7.

html – 为什么我的favicon没有出现?

html – 为什么我的favicon没有出现?

以下用于在我的HTML代码中设置favicon:
<link rel="icon" type="img/ico" href="img/favicon.ico">

但是,图标不显示.为什么?

注意:

我已确认该文件在正确的路径上是磁盘上的.

解决方法

>它真的是.ico,还是只是命名为“.ico”?
>您正在测试哪种浏览器?

拥有图标的绝对最简单的方法是在根文件夹中放置一个名为“favicon.ico”的图标.这只适用于所有地方,根本不需要代码.

如果必须将其放在子目录中,请使用:

<link rel="shortcut icon" href="/img/favicon.ico" />

注意img之前的/以确保它锚定到根文件夹.

node.js – 为什么我的Passport auth函数在路由中调用时没有执行?

node.js – 为什么我的Passport auth函数在路由中调用时没有执行?

我正在使用Passport来保护MEAN堆栈应用程序的前端和后端.该应用程序的结构如下:

monstermash
    config // server configuration
    public // static directory that will serve the entire Angular frontend
    app
        index.js // initialization of the server
        models 
            index.js // mongoose schemas and models
        passport 
            index.js // configuration for passport and all my strategies
        routes 
            index.js // basic route deFinitions for the API (using functions defined under v1,below) and UI (routes defined inline here for simplicity's sake)
                v1
                    index.js // all the functions called to power the API routes

这是app / index.js,因为我知道有时候需要按正确的顺序调用应用程序中间件:

var express = require('express');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var session = require('express-session');
var mongoose = require('mongoose');
var app = express();
var CONfig = require('config').BASE;
var bcrypt = require('bcrypt-nodejs');
var passport = require('passport');
var flash = require('connect-flash');
var models = require('./models');

app.passport = require('./passport');
app.port = CONfig.PORT;
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({
    extended: false
})); 
app.use(allowCrossDomain);
app.use(express.static('public'));
app.use(cookieParser());
app.use(session({ 
    secret: 'keyboard cat',resave: true,saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());

var routes = require('./routes');

app.use(express.static('public',{redirect:false}));
routes(app)

module.exports = app

passport / index.js看起来像这样.许多已注释掉的位只是为了调试而被删除,以便进行调试:

var models = require('../models')

passport = require('passport'),LocalStrategy = require('passport-local').Strategy,LocalAPIKeyStrategy = require('passport-localapikey-update').Strategy;

passport.use('localapikey',new LocalAPIKeyStrategy(
  {apiKeyHeader:'x-auth-token'},function(apikey,done) {
  console.log('api key');
    models.User.findOne({ apikey: apikey },function (err,user) {
      if (err) { return done(err); }
      if (!user) { return done(null,false); }
      return done(null,user);
    });
  }
));

passport.use('local-signup',new LocalStrategy(
  function (req,username,password,done) {
    console.log('trying local');
    models.User.findOne({
      local: {username: username},user) {
        if (err) {
          return done(err);
        }
        if (!user) {
          console.log('no user');
          return done (null,false);
        }

        if (!user.validPassword(password)) {
          console.log('bad pwd');
          return done(null,false);
        }
        return done (null,user);
      }
    })
  }
));

module.exports = passport;

此处包含localaipkey策略只是为了说明它的工作原理和配置方式与本地注册策略的配置方式大致相同.

然后我的routes / index.js看起来像这样.登录表单的HTML在这里是内联的,因为这只是一个初步的测试.请注意,除了检查验证之外,我没有做任何事情.在这里包含一条API路线也可以证明它是如何设置的.这里的UI代码直接从Passport教程中解除,因为我回到绘图板并在此问题上摆脱了我自己的代码.

var v1 = require('./v1');

  // API routes as an example. This authentication is called before the route and works fine.

  module.exports = function(app) {
    /* API: V1 */
    app.route('/v1/monster/:id')
      .put(
        app.passport.authenticate('localapikey',{ session: false }),v1.monster.update)
      .delete(
        app.passport.authenticate('localapikey',v1.monster.delete
      );

    // My test login routes. Here,authenticate is called inside the route because it's the handler for logging in.

    app.route('/login')
      .post(
        function (req,res) {
          console.log(req.body);
          app.passport.authenticate('local-signup',{ 
            successRedirect: '/root',failureRedirect: '/fail'
          });
      })
      .get(function (req,res) {
        res.send('<!-- views/login.ejs -->\
          <!doctype html>\
          <html>\
          <head>\
              <title>Node Authentication</title>\
              <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css"> <!-- load bootstrap css -->\
              <link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css"> <!-- load fontawesome -->\
              <style>\
                  body        { padding-top:80px; }\
              </style>\
          </head>\
          <body>\
          <div>\
          \
          <form action="/login" method="post">\
            <div>\
                <label>Username:</label>\
                <input type="text" name="username"/>\
            </div>\
            <div>\
                <label>Password:</label>\
                <input type="password" name="password"/>\
            </div>\
            <div>\
                <input type="submit" value="Log In"/>\
            </div>\
        </form>\
          \
          </div>\
          </body>\
          </html>');
      });

因此,该表单使用表单数据提交POST:/ login请求.表单体在req.body中,但我在验证函数中的console.log消息永远不会被记录.表单提交只是挂起并挂起;该路由上没有res.send()因为身份验证应该通过或者失败并且永远不会达到,但整个app.passport.authenticate()函数才被完全绕过.

我已经对此做了很多反复试验,我发现如果我用一个甚至没有注册的策略名称调用app.passport.authenticate(),就会发生同样的事情:那里有没有失败的消息,它只是继续与路线,就像它甚至没有.所以也许问题是这种情况正在发生,并且它没有认识到正在注册的本地注册策略,尽管我不知道为什么会这样,并且找到了localapikey策略.

旁注,我实际上正在使用表单中设置的用户名和密码对其进行测试;我发现有一个问题来自那些尝试空洞或无密码提交并且没有看到他们的验证功能执行的人,所以我确定不是那样.

解决方法

所以,我的问题的答案基本上是“因为你不能在路由中调用authenticate函数.”

我没有删除这个问题,因为我知道我从某个Passport教程中得到了这个想法,因此其他人可能会在以后成为同样的东西.

关于为什么我的 Cart.js 没有呈现?反应路由器cart无效怎么办的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于angularjs – 为什么我的角度服务值没有更新我的范围?、css – 为什么禁用的文本元素在Safari中没有呈现为黑色?、html – 为什么我的favicon没有出现?、node.js – 为什么我的Passport auth函数在路由中调用时没有执行?等相关知识的信息别忘了在本站进行查找喔。

本文标签: