Polymer向元素添加行为

时间:2016-07-24 14:28:52

标签: polymer polymer-1.0

我创建了一个新的聚合物项目。

通过终端mkdir project; cd project; polymer init;然后创建一个应用程序抽屉模板。

将行为添加到my-view2元素的正确方法是什么? src/my-view2.html

如果我在src/some-behavior.html

创建行为
<script>
SomeBehavior = {
    testing: function()
    { alert('hello'); }
}
</script>

然后在view2中导入

<link rel="import" href="some-behavior.html">

并将其包含在聚合物中

Polymer({

  is: 'my-view2',

  behaviors: [SomeBehavior]

});

并在html中添加一个按钮以调用我刚刚创建的新功能。

<button on-tap="testing">Test</button>

然后通过

构建聚合物应用程序

sudo polymer build # im using sudo because my permissions are wrong

然后使用

build/bundled目录部署到firebase

sudo firebase deploy # same dodgy permission problem

这适用于桌面: 我已经使用最新版本的Chrome,Firefox和Safari进行了检查。

但是在iOS上我遇到了一个问题,即view2页面没有加载。我已经在iPhone上测试了osx 9.3(我认为,无论如何都是最新的版本)然后在iPhone 4s,5s,6s的模拟器中进行测试

如果我从页面中删除行为,重建和部署,它将重新开始工作。

如果我运行聚合物棉绒,我会收到此警告

Behavior SomeBehavior not found when mixing properties into my-view2!

我做错了什么?

1 个答案:

答案 0 :(得分:0)

根据Polymer Project Documentation,您需要在行为html文件中定义自己的命名空间,如下所示:

window.MyBehaviors = window.MyBehaviors || {};
MyBehaviors.SomeBehavior = { ... }

这会将MyBehaviors命名空间添加到全局窗口对象,因此可以从元素中将行为引用为“myBehaviors.SomeBehavior”。

我认为Polymer需要这样做以避免与当前和未来的Polymer行为发生冲突。

另见Rob Dodson's video on Behaviors