【问题标题】:Ember not updating the view on model changeEmber 不更新模型更改的视图
【发布时间】:2013-09-18 13:36:10
【问题描述】:

这个小提琴重新创建了初学者工具包,并带有改变模型的额外按钮。

http://jsfiddle.net/UjacC/1/

但是,当单击更改时,数组会更改,但视图不会更新。为什么?

<title>Ember Starter Kit</title>

<body>

  <script type="text/x-handlebars">
    <h2>Welcome to Ember.js</h2>
        <button id="btnChange">change model</button>
    {{outlet}}
  </script>

  <script type="text/x-handlebars" data-template-name="index">
    <ul>
    {{#each item in model}}
      <li>{{item}}</li>
    {{/each}}
    </ul>
  </script>

  <script>
         $(document).ready(function(){
          console.log(stuff);

          $("#btnChange").click(function(){
            stuff.push("d");
            console.log("change",stuff);
          });

      });
    </script>

</body>




App = Ember.Application.create();

var stuff = ["a","7","b","c"];

App.Router.map(function() {
  // put your routes here
});

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return stuff;
  }
});

【问题讨论】:

    标签: view model ember.js


    【解决方案1】:

    您需要使用 Embers pushObject 而不是 stuff.push,它会通知侦听器对象发生了更改。

    编辑:

    这是更新后的 jsfiddle:http://jsfiddle.net/UjacC/2/

    【讨论】:

    • 甜蜜。如果我们想完全重新计算和交换模型怎么办,例如:jsfiddle.net/UjacC/3
    • 这也适用于多维数组吗?您还可以向我指出解释这一点的文档吗?没有办法将模型设置为脏,这会强制重新获取和重新计算?
    • 这真的取决于具体的用例和你想要做什么。查看this 链接以获得额外的好处,如果这对您有用,请记得检查我的答案是否已解决:D
    • 没有办法将模型设置为脏,这会强制重新获取和重新计算?标记为已解决,很高兴与您一起摆弄先生。
    • 我相信(如果您使用的是 Ember 数据)对模型的任何更改都会将脏属性设置为 true,但我不使用 ED,所以我不是 100% 确定的那个。
    猜你喜欢
    • 2014-02-13
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2016-08-23
    • 2018-04-02
    相关资源
    最近更新 更多