Javascript 将单击处理程序绑定到模型中的行项目:fire方法

Javascript 将单击处理程序绑定到模型中的行项目:fire方法,javascript,ember.js,dom-events,Javascript,Ember.js,Dom Events,我正在开发一个小样本应用程序,以适应编写余烬应用程序。我正在提取我的推文的JSON提要,并将它们显示到页面上。为了在代码中实现模型,我添加了一个名为markAsRead的方法 我想将一个事件绑定到每一行项目,这样当它被单击时,就会触发它自己的markAsRead方法。最终目标是在触发该事件时更改行项目上的类。以下是我目前掌握的代码: 我知道Ember有自己的处理方法,所以我正在寻找一种最佳实践方法来实现这一点。您应该为每一行项目使用一个视图。差不多 {{#each Tweets.allTwee

我正在开发一个小样本应用程序,以适应编写余烬应用程序。我正在提取我的推文的JSON提要,并将它们显示到页面上。为了在代码中实现模型,我添加了一个名为
markAsRead
的方法

我想将一个事件绑定到每一行项目,这样当它被单击时,就会触发它自己的
markAsRead
方法。最终目标是在触发该事件时更改行项目上的类。以下是我目前掌握的代码:


我知道Ember有自己的处理方法,所以我正在寻找一种最佳实践方法来实现这一点。

您应该为每一行项目使用一个视图。差不多

{{#each Tweets.allTweetsController}}
      {{#view Tweets.TweetItemView contentBinding="this"}}
        {{#with content}}
          <li> {{myTweet}}</li>
        {{/#with}}
      {{#/view}}
{{/#each}}
{{#每个Tweets.allTweetsController}
{{{#查看Tweets.TweetItemView contentBinding=“this”}
{{{有内容}
  • {{myTweet}}
  • {{/#with} {{{#/view} {{/#各}

    TweetItemView应该有一个click方法,每次单击时都会触发该方法。由于contentBinding,您可以访问视图中的单个tweet作为内容

    您应该为每一行项目使用一个视图。差不多

    {{#each Tweets.allTweetsController}}
          {{#view Tweets.TweetItemView contentBinding="this"}}
            {{#with content}}
              <li> {{myTweet}}</li>
            {{/#with}}
          {{#/view}}
    {{/#each}}
    
    {{#每个Tweets.allTweetsController}
    {{{#查看Tweets.TweetItemView contentBinding=“this”}
    {{{有内容}
    
  • {{myTweet}}
  • {{/#with} {{{#/view} {{/#各}
    TweetItemView应该有一个click方法,每次单击时都会触发该方法。由于contentBinding,您可以作为内容访问视图中的单个tweet

    我已经重新构建了您到目前为止所拥有的功能,并在这个JSFIDLE中添加了您正在寻找的功能:。希望这能为你清理一切:)

    安迪



    我已经重新构建了您到目前为止所拥有的功能,并在这个JSFIDLE中添加了您正在寻找的功能:。希望这能为您澄清一切:)

    我正在实现一些类似的东西,就像我正在为wordpress开发一个开源提要阅读器一样。用户界面都是灰烬。签出-它带有标记为read以及键盘快捷键。

    我正在实现一些类似的东西,就像我正在为wordpress开发一个开源提要阅读器一样。用户界面都是灰烬。签出-它带有“标记为已读”和键盘快捷键。

    所以我应该在我的JS文件中定义一个视图,对吗?我还没有这么做,所以这对我来说是新鲜事。在上面的示例中,“with content”部分做什么?这是设置范围还是什么?还有一个问题,视图的contentBinding属性…是告诉视图使用“each”迭代器中的内容吗?with标记设置把手上下文-如果忽略它,myTweet部分将需要是content.myTweet(因为view标记将上下文设置为嵌入视图)对于在js文件中定义视图,可以使用{{action}}标记,而不是使用{{action}}标记,但是如果要开始将这些对象作为对象进行操作,则需要ViewBinding,对于contentbinding,可以使用yeah标记,将内容属性绑定到当前对象。当前对象是上下文,上下文是由each标记设置的,所以我要在我的JS文件中定义一个视图,对吗?我还没有这么做,所以这对我来说是新鲜事。在上面的示例中,“with content”部分做什么?这是设置范围还是什么?还有一个问题,视图的contentBinding属性…是告诉视图使用“each”迭代器中的内容吗?with标记设置把手上下文-如果忽略它,myTweet部分将需要是content.myTweet(因为view标记将上下文设置为嵌入视图)对于在js文件中定义视图,可以使用{{action}}标记,而不是使用{{action}}标记,但是如果要开始将这些对象作为对象进行操作,则需要ViewBinding,对于contentbinding,可以使用yeah标记,将内容属性绑定到当前对象。当前对象是上下文,上下文由每个标记设置有趣…谢谢Roy。我拿着你的小提琴,把它演奏完。谢谢你的时间,没问题。要回答其他两个问题。。。在该示例中,
    {{#with content}
    将范围更改为Tweets.TweetItemView.content
    contentBinding=“this”
    将创建的视图上的content属性绑定到#each iterator中当前项的内容。谢谢。关于你的例子,我也有一个问题。在JS部分,你说的是
    App.set('tweetsController',Ember.ArrayController.create({
    。这与
    App.tweetsController=Ember.ArrayController.create
    )相同吗?如果是这样,为什么要使用一个而不是另一个呢?不,在这么小的应用中这没关系,但在有单例(控制器)的大型应用中绑定或访问其他单例如果不使用Ember的通用访问器,您可能会遇到一些大麻烦。因此,最佳做法是,在处理Ember对象的单例和属性时始终使用它们。您可以阅读更多有关Ember的通用访问器的信息(如
    get()
    set()
    )这里:很有意思…谢谢你,罗伊。我会拿着你的小提琴来练习。感谢你的时间。没问题。要回答你的另外两个问题,
    {{{with content}
    将范围更改为Tweets.TweetItemView.content。在该示例中,
    contentBinding=“this”
    将视图上创建的内容属性绑定到#each iterator中当前项的内容。谢谢。我也有一个关于您的示例的问题。在JS部分,您说
    App.set('tweetsController',Ember.ArrayController.create({
    。这与
    App.tweetsController=Ember.ArrayController.create
    相同吗?如果是这样,为什么要使用一个而不是另一个呢?不,不是。在这样一个小的应用中,这无关紧要,但是在你有单例绑定或访问其他单例的大型应用中,如果你不使用Ember的unive,你可能会遇到一些大麻烦