Polymer 1.0:为什么来自官方Polymer Github(native element)的<firebase-element>的demo <x-login>出错?

时间:2015-07-28 18:21:39

标签: firebase polymer polymer-1.0 demo firebase-authentication

问题

  

可能导致以下控制台错误的原因是什么?

Uncaught TypeError: this.$.firebaseLogin.login is not a function

解释

  1. 我正在尝试实施<x-login>元素的<firebase-element>演示。

  2. 我直接使用this demo from the official Polymer Github repository中的代码。

  3. 我正在将代码直接应用到我的应用程序(正确的AFAIK)中,没有可能引入错误的编辑(我知道)。

  4. 代码

    进口:

    <link rel="import" href="../bower_components/polymer/polymer.html">
    <link rel="import" href="../bower_components/firebase-elelment/firebase-auth.html">
    

    元素:                               

        Firebase location:
        <input value="https://polymer-tests.firebaseio.com" size="40" disabled>
        <br>
    
        Provider type:
        <select value="{{provider::change}}">
          <option>anonymous</option>
          <option>facebook</option>
          <option>github</option>
          <option>google</option>
          <option>twitter</option>
          <option>password</option>
        </select>
        <em>Only 'anonymous', 'google', and 'password' are activated for demo Firebase account</em>
        <br>
    
        Login params (JSON):
        <input value="{{params::input}}" id="params">
        <em>Required by some provider types</em>
        <br>
    
        <div hidden$="{{computePasswordHidden(provider)}}">
          <br><em>Password-specific options:</em><br>
          <input placeholder="email" value="{{email::input}}">
          <input placeholder="password" value="{{password::input}}">
          <button on-tap="createUserHandler" disabled$="{{computeCreateUserDisabled(email, password)}}">Create user</button>
          <br>
          <input placeholder="new password" value="{{newPassword::input}}">
          <button on-tap="changePasswordHandler" disabled$="{{computeChangePasswordDisabled(email, password, newPassword)}}">Change password</button>
          <br>
          <button on-tap="resetPasswordHandler" disabled$="{{computeResetPasswordDisabled(email, password)}}">Reset password</button>
          <button on-tap="removeUserHandler" disabled$="{{computeRemoveUserDisabled(email, password)}}">Remove user</button>
        </div>
        <br>
        <div id="message">[[message]]</div>
        <br>
    
        <button on-tap="login" hidden$="{{computeLoginHidden(statusKnown, user)}}">Login</button>
        <button on-tap="logout" hidden$="{{computeLogoutHidden(statusKnown, user)}}">Logout</button>
    
        <h3>Login status:</h3>
        <p>{{computeLoginStatus(statusKnown, user)}}</p>
    
        <h3>User ID:</h3>
        <pre>{{user.uid}}</pre>
      </template>
    </dom-module>
    <script>
      Polymer({
        is: 'x-login',
        properties: {
          provider: {
            type: String,
            value: 'anonymous'
          },
          message: {
            type: String,
            value: ''
          },
          email: {
            type: String,
            value: ''
          },
          password: {
            type: String,
            value: ''
          },
          user: {
            type: Object,
            value: null
          },
          statusKnown: {
            type: Boolean
          }
        },
        login: function() {
          var params;
          try {
            params = JSON.parse(this.params);
          } catch (e) {
            params = null;
          }
          if (this.provider == 'password') {
            params = params || {};
            params.email = this.email;
            params.password = this.password;
          }
          this.$.firebaseLogin.login(params);
        },
        logout: function() {
          this.$.firebaseLogin.logout();
        },
        errorHandler: function(e) {
          this.message = 'Error: ' + e.detail.message;
        },
        userSuccessHandler: function(e) {
          this.message = e.type + ' success!';
        },
        createUserHandler: function(e) {
          this.$.firebaseLogin.createUser(this.email, this.password);
        },
        changePasswordHandler: function(e) {
          this.$.firebaseLogin.changePassword(this.email, this.password, this.newPassword);
        },
        resetPasswordHandler: function(e) {
          this.$.firebaseLogin.sendPasswordResetEmail(this.email);
        },
        computePasswordHidden: function(provider) {
          return provider !== 'password';
        },
        computeCreateUserDisabled: function(email, password) {
          return !email || !password;
        },
        computeChangePasswordDisabled: function(email, password, newPassword) {
          return !email || !password || !newPassword;
        },
        computeResetPasswordDisabled: function(email, password) {
          return !email || !password;
        },
        computeRemoveUserDisabled: function(email, password) {
          return !email || !password;
        },
        computeLoginHidden: function(statusKnown, user) {
          return !statusKnown || !!user;
        },
        computeLogoutHidden: function(statusKnown, user) {
          return !statusKnown || !user;
        },
        computeLoginStatus: function(statusKnown, user) {
          if (statusKnown && user) {
            return 'Logged in';
          }
          if (statusKnown) {
            return 'Logged out';
          }
          return 'Unknown (checking status...)';
        }
      });
    </script>
    

1 个答案:

答案 0 :(得分:2)

categoryId

element is spelled wrong