javascript - 使用 Polymer 在元素上设置属性会出现错误 "Cannot set property ' .. .' of undefined'

标签 javascript polymer custom-element

我正在尝试使用 polymer 设置一个自定义元素,该元素由一个带有图标的可拖动框组成。我希望能够通过指定 icon 来定义图标元素上的属性,以便我可以声明性创建元素而不是定义 setIcon元素上的方法,只能通过 javascript 访问。

我尝试通过包含 properties 将我的元素设置为处理该属性。我正在输入 polymer 的元素原型(prototype)上的属性,给我看起来像这样的元素代码:

var elementProto = {
    is : "my-element",
    behaviors : [someOtherProto],
    properties : {
        icon : {
            "type" : "String",
            "observer" : "_iconObserver",
        }
    },
    _iconObserver : function(){ /* Functionality for adding icon */}
};

elementProto.otherMethods = various functions;

Polymer(elementProto);

在另一个文件中,我尝试使用 setAttribute 设置我的图标属性在另一个 javascript 函数中,(在通过关联的 html 文件导入我的新元素之后)如下所示:

var newElement = document.createElement("my-element");
newElement.setAttribute("icon", "some/icon/path.png");

理想情况下,这会以新路径作为参数来触发我的观察者函数,并且我会将新元素中图像的 URL 设置为该路径的任何值。相反,Chrome 给我这个错误:

Uncaught TypeError: Cannot set property 'icon' of undefined

为什么我会收到此错误,我该如何修复它?

调试注意事项:

我深入研究了 polymer 代码,发现错误源自这一行:

var model = this._clientsReadied ? this : this._config;

两者this._clientsReadiedthis._config未定义,这导致 ._setAttributeToProperty(model, name); 中出现此错误方法,其中 name被设置为 model 上的属性。不过,我对 polymer 了解不够,不知道为什么这些属性是未定义的。

最佳答案

Why am I getting this error, and what can I do to fix it?

您收到此错误是因为在调用 createElement() 时,您的自定义元素尚未注册。可能是因为这两个文件的解析顺序错误。

要解决此问题,您可以尝试更改导入文件的顺序,或者等待 HTMLImportsLoadedWebComponentsReady 事件。

document.addEventListener("HTMLImportsLoaded", function () 
{
    var newElement = document.createElement("my-element");
    newElement.setAttribute("icon", "some/icon/path.png");
});

关于javascript - 使用 Polymer 在元素上设置属性会出现错误 "Cannot set property ' .. .' of undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38405728/

相关文章:

binding - Aurelia + Select2 自定义元素未传播选定更改

javascript - 清理自定义元素中的事件监听器

javascript - 如何检索同一字符之间的字符串

javascript - 如何使用 JavaScript 或 AppleScript 多次写入标准数据?

html - 在图标和长文本之间换行(无空格)

polymer - 如何访问 Polymer 中的::content 元素

polymer - scala.js 中真正的 JS 类来开发 webcomponents

javascript - 为什么显示:flex do not respect shadow root border?

java - 如何在java rhino lib脚本中不导入系统lib类?

javascript - 使用 javaScript SDK 登录 Parse.com