2017-01-02 57 views
0

我正在使用最新的2.0-preview版本的Polymer。我想設置默認屬性,並且Polymer文檔描述了how to do it in Polymer 1.x。我無法在v2.0的這種方法中找到任何更改。但它似乎只對原始的性質,而不是對象的工作:爲什麼默認的嵌套Polymer值不起作用?

"use strict"; 

class NewElement extends Polymer.Element { 
    static get is() { 
     return 'new-element'; 
    } 

    static get config() { 
     return { 
      properties: { 
       user: { 
        // type: Object, <-- doesn't help anyway 

        firstName: { 
         type: String, 
         value: "John", 
         // observer: '_callObserver' <-- FYI observers don't work properly too if this usage... 
        }, 

        lastName: { 
         type: String, 
         value: "Doe" 
        } 
       }, 
       position: { 
        type: String, 
        value: "Waiter" // <-- will set a high-level default value properly correctly 
       } 
      }, 

      // observers: [ 
      // '_callObserver(user.*)' <-- ...but works using this approach 
      // ] 
     } 
    } 

    constructor() { 
     super(); 
     console.dir(this); // <-- see screenshots below 
     // this.user = { firstName: "John", lastName: "Doe" }; <-- works if initialized manually 
    } 
} 

customElements.define(NewElement.is, NewElement); 

正如你可以看到here有一個getter,當我點擊它,我看到user field is undefined

我在做什麼錯?

回答

1

它看起來像你試圖嵌套屬性聲明,這是不支持的。您可以聲明一個包含子屬性的對象屬性(不包括具有type,observer等的屬性聲明)。

user財產申報:

properties: { 
    user: { 
    type: Object, 
    firstName: { 
     type: String, 
     value: "John", 
    }, 
    lastName: { 
     type: String, 
     value: "Doe" 
    } 
    }, 
}, 

實際上應該是這樣的:

properties: { 
    user: { 
    type: Object, 
    value: function() { 
     return { 
     firstName: "John", 
     lastName: "Doe" 
     }; 
    } 
    }, 
}, 

codepen

+0

是的,它的工作原理,謝謝!我試圖理解如何使用Polymer數據系統,並且在創建複雜應用程序時似乎需要嵌套屬性聲明。可能你知道 - 這是否是潛在的問題?聚合物有沒有支持這些聲明的計劃? –

+0

@SergeyNovikov沒問題:)據我所知,沒有計劃。但你想做什麼?如果你想觀察子屬性,這已經可以[複雜的觀察者](https://www.polymer-project.org/1.0/docs/devguide/observers#complex-observers)(例如,'observers:['_firstNameChanged( user.firstName)']')。 – tony19

+0

另外,請注意[數據系統概念](https://www.polymer-project.org/1.0/docs/devguide/data-system)文檔可能通常有用於閱讀(如果您還沒有看到它)。 – tony19

相關問題