在EmberJS中重新绑定时,数组值没有得到反映 [英] Array values are not getting reflected while rebinding in EmberJS

查看:115
本文介绍了在EmberJS中重新绑定时,数组值没有得到反映的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数组( ['Name1','Name2','Name3'] ),我正在加载页面。
现在按钮点击,我想为该数组分配一些其他值,并像

 应用程序一样填充。 myArray = ['Name4','Name5','Name6'] 

但是没有反映出来。



完成代码

 <!DOCTYPE html> 
< html>
< head>
< script src =https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/3.0.1/handlebars.min.js>< / script>
< script src =https://code.jquery.com/jquery-2.1.3.min.js>< / script>
< script src =https://cdnjs.cloudflare.com/ajax/libs/ember.js/1.10.0/ember.min.js>< / script>
< script src =http://builds.emberjs.com/tags/v1.10.0-beta.3/ember-template-compiler.js>< / script>
< script src =http://builds.emberjs.com/release/ember.debug.js>< / script>
< script src =http://builds.emberjs.com/beta/ember-data.js>< / script>
< / head>
< body>

< script type =text / x-handlebars>
{{outlet}}
< / script>


< script type =text / x-handlebarsdata-template-name =index>
< button {{actionClickFn}}>点击此处< / button>
< ul>

{{AppeleArray中的#each值}}
< li> {{value}}< / li>
{{/ each}}
< / ul>
< / script>

< script type =text / javascript>
var App = Ember.Application.create()

App.myArray = ['Name1','Name2','Name3']

App.IndexRoute = Ember.Route.extend({

actions:{

ClickFn:function(){

App.myArray = ['Name4' 'Name5','Name6']
console.log(App.myArray);
}
}
});

< / script>
< / body>
< / html>

目前的情况是



解决方案

使用 Ember.set 方法进行更改以在模板中反映。所以只需将 App.myArray = ['Name4','Name5','Name6'] 替换为



<$ Ember.set(App,'myArray',['Name4','Name5','Name6']);

我不会对这种东西使用全局变量。您可以在IndexRoute本身介绍它(我想你正在做它的测试目的)。


I have an array (['Name1','Name2','Name3']) which I am populating at page Load. Now at button click, I want to assign some other values to that array and populate the same like

App.myArray = ['Name4','Name5','Name6'] 

But it is not reflected.

Complete code

<!DOCTYPE html>
<html>
   <head>      
      <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/3.0.1/handlebars.min.js"></script>
      <script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/ember.js/1.10.0/ember.min.js"></script>
      <script src="http://builds.emberjs.com/tags/v1.10.0-beta.3/ember-template-compiler.js"></script>
      <script src="http://builds.emberjs.com/release/ember.debug.js"></script>
      <script src="http://builds.emberjs.com/beta/ember-data.js"></script>
   </head>
   <body>

      <script type="text/x-handlebars">
         {{outlet}}
      </script>


      <script type="text/x-handlebars" data-template-name="index">
      <button {{action "ClickFn"}}>Click Here</button>
         <ul>

            {{#each value in App.myArray}}               
               <li>{{value}}</li>
            {{/each}}
         </ul>
      </script>

      <script type="text/javascript">
         var App = Ember.Application.create()

         App.myArray = ['Name1','Name2','Name3']         

         App.IndexRoute = Ember.Route.extend({

            actions: {

               ClickFn: function() {

                  App.myArray = ['Name4','Name5','Name6'] 
                  console.log(App.myArray) ;               
               }
             }
         });

      </script>
   </body>
</html>

The current situation is

I am looking for the output should be when button click

解决方案

Use Ember.set method for changes to reflect it in template. so just replace App.myArray = ['Name4', 'Name5', 'Name6'] with the below

 Ember.set(App,'myArray',['Name4', 'Name5', 'Name6']);

I would say dont use global variable for this kind of stuff. you can introduce it in IndexRoute itself.(i guess you are doing it for testing purpose).

这篇关于在EmberJS中重新绑定时,数组值没有得到反映的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆