最新棋牌游戏官网下载 当前位置:首页>最新棋牌游戏官网下载>正文

最新棋牌游戏官网下载

发布时间:2018-11-14

原标题:riot.js教程【四】Mixins、HTML内嵌表达式

如遇【线上娱乐站】不能自动打开,请复制 http://da8.us 到浏览器,注册自动送8-88试 ̶̶̶̶̶̶̶̶̶̶玩 ̷̷̷̷̷̷̷̷̷̷金。体验各种类的线上PT/DT/MG/PNG ̶̶̶̶̶̶̶̶̶̶老 ̷̷̷̷̷̷̷̷̷̷虎 ̷̷̷̷̷̷̷̷̷̷机、 ̷̷̷̷̷̷̷̷̷̷真* ̷̷̷̷̷̷̷̷̷̷人* ̶̶̶̶̶̶̶̶̶̶百* ̶̶̶̶̶̶̶̶̶̶家 ̷̷̷̷̷̷̷̷̷̷*乐*游戏等免费试玩、优惠活动,7*24小时专业服务

老僧笑笑道:“如此说来,那还是有了。我诚心诚意,想要看看大唐宝物与我这偏僻地界有何异同,长老也莫要太小气了。”

波克斗地主安卓下载

吱吱、吱吱,蹲在后面体型较小白猿嘴里发出叫声,再看上面那头巨型公猿,身体突然立起,胸口位置出现一小堆红毛,那是白猿命门所在,坚硬皮毛,锋利牙齿加上强有力四肢,俨然成为雪山上的霸主。
东抚司面色微红,营帐内鹰、蛇、豹三组千户都在,桌案上只有简单几碟酒菜,朱元璋厉行节俭之风,其他人自是不敢越界,好在有随身携带美酒,无形中填补一些遗憾。

“去把你的师弟聂风找来,我会你们在一个月之内打败雄霸,至于刘皓,我不敢说因为我自己到现在为止都没办法摸透达到何种地步,我甚至怀疑他不是这个世界的人类,但是如果你听我说的,起码你还有这个可能性在未来和他一战。”

前文回顾
riot.js教程【三】访问DOM元素、使用jquery、mount输入参数、riotjs标签的生命周期;
riot.js教程【二】组件撰写准则、预处理器、标签样式和装配方法;
riot.js教程【一】简介;

共享Mixins

混合开发可以使你很好的复用代码,如下所示:

var OptsMixin = {
  // the `opts` argument is the option object received by the tag as well
  init: function(opts) {
    this.on("updated", function() { console.log("Updated!") })
  },

  getOpts: function() {
    return this.opts
  },

  setOpts: function(opts, update) {
    this.opts = opts
    if (!update) this.update()
    return this
  }
}

<my-tag>
  <h1>{ opts.title }</h1>

  this.mixin(OptsMixin)
</my-tag>

在上面这个示例中,你给页面中所有的my-tag标签增加了两个实例方法

getOpts和setOpts

来看下面的示例

var my_tag_instance = riot.mount("my-tag")[0]

console.log(my_tag_instance.getOpts()) // will log out any opts that the tag has

另外,init方法是一个特殊的方法,

当一个riot标签加载一个mixin对象时,会执行init方法

init方法不是标签的实例方法,它是不可访问的

上面例子中,我们已经为my-tag设计了一个mixin对象OptsMixin,

那么我们想为这个对象补充一个方法该如何做呢?如下:

function IdMixin() {
  this.getId = function() {
    return this._id
  }
}

var id_mixin_instance = new IdMixin()

<my-tag>
  <h1>{ opts.title }</h1>

  this.mixin(OptsMixin, id_mixin_instance)
</my-tag>

所以一个mixin对象可以是一个json对象,

也可以是一个方法的实例

全局的mixins

如果你需要为你所有的标签扩展方法

你就可以使用全局mixins

riot.mixin(mixinObject)

与共享mixins不同,全局mixins会直接被所有的标签加载;

要谨慎使用全局的mixins

HTML内嵌表达式

可以在HTML内部嵌入用大括号包裹的JS表达式,

大括号包裹的JS表达式既可以被用于文本标签,也可以被用于HTML属性

<h3 id={ /* attribute_expression */ }>
  { /* nested_expression */ }
</h3>

下面举几个例子:

{ title || "Untitled" }
{ results ? "ready" : "loading" }
{ new Date() }
{ message.length > 140 && "Message is too long" }
{ Math.round(rating) }

为了使你的HTML标签保持clean

建议原则是尽量使用简洁的JS表达式

如果你的表达式演变的越来越复杂了

那么考虑把表达式里的一些逻辑转义到update事件中去,如下

<my-tag>

  <!-- the `val` is calculated below .. -->
  <p>{ val }</p>

  // ..on every update
  this.on("update", function() {
    this.val = some / complex * expression ^ here
  })
</my-tag>

HTML标签中,拥有布尔值的属性,比如checked, selected这类属性

当表达式的值为false的时候,这些属性是不会添加到HTML标签中的

下面两行代码是等价的

<input checked={ null }>

<input>

W3C规定,这类属性,就算你没给它设置值,只要他出现在HTML标签内,那么它就等价于给这类属性设置了true的值

再来看下面这行代码

<p class={ foo: true, bar: 0, baz: new Date(), zorro: "a value" }></p>

这个标签的类名经过计算后是:foo baz zorro

因为bar的值是0,0就是false,只有值是true的才会被应用到标签上

这个特性不一定用于class,还可以用在别的地方

你还可以直接这样写:

<my-tag>
  <p class={ classes }></p>
  <script>
    hasAnimation() {
      return true
    }

    this.randomNumber = 5

    this.classes = {
      foo: true,
      bar: false,
      number: "3 > randomNumber",
      animated: "hasAnimation()", //注意:这里要写成字符串的形式
      baz: new Date(),
      zorro: "a value"
    }
  </script>
</my-tag>

经过计算后P的样式类有foo number animated baz zorro

HTML标签的行内样式也可以写成类似这样

<my-tag>
  <p style={ styles }></p>
  <script>
    this.styles = {
      color: "red",
      height: "10rem"
    }
  </script>
</my-tag>

riotjs会自动把对象转换成描述样式的字符串

<p style="color: red; height: 10rem"></p>

那么如何打印大括号到浏览器呢?可以用下面这种方式:

\{ this is not evaluated \} 

你如果不喜欢用大括号来告诉riotjs哪行代码是你的表达式

你可以通过配置改变这一点:

riot.settings.brackets = "${    }"
riot.settings.brackets = "{{    }}"

注意,标注之间要用一个空格隔开

riotjs的表达式,只能输出(渲染)纯文本的字符串值;

不能输出(渲染)HTML的字符串值

但是,你可以通过变通的方式完成这项工作,如下:

<raw>
  <span></span>

  this.root.innerHTML = opts.content
</raw>

<my-tag>
  <p>Here is some raw content: <raw content="{ html }"/> </p>

  this.html = "Hello, <strong>world!</strong>"
</my-tag>

注意,这样做很容易受到跨站脚本攻击,千万不要加载不受你控制的数据;

编辑:纯侯宗

发布时间:2018-11-14 09:20:02

当前文章:http://sjzhaiyuan.cn/house/94vzq.html

波克棋牌官方下载2018 打牌网官网下载 单机四川麻将免费下载 德扑圈客服电话是多少 德扑圈真的可以透视么 德州扑克之夜安卓版 方块娱乐骗钱 凤凰山庄棋牌游戏

44111 48841 92703 29034 37101 9563513885 68538 86173

责任编辑:侯伯伯

随机推荐