Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的代码没有更改emberjs中的值?_Javascript_Ember.js_Handlebars.js - Fatal编程技术网

Javascript 为什么我的代码没有更改emberjs中的值?

Javascript 为什么我的代码没有更改emberjs中的值?,javascript,ember.js,handlebars.js,Javascript,Ember.js,Handlebars.js,我正在学习emberjs,当按下按钮时,我很难更改布尔值 这就是我在javascript中所做的: App.LiensController = Ember.ArrayController.extend({ actions: { addToPortfolio: function() { this.set('isInPortfolio', true); console.log('Action is Happening!'); } } }); App.

我正在学习emberjs,当按下按钮时,我很难更改布尔值

这就是我在javascript中所做的:

App.LiensController = Ember.ArrayController.extend({
  actions: {
    addToPortfolio: function() {
      this.set('isInPortfolio', true);
      console.log('Action is Happening!');
    }
  }
});

App.LIENS=[
  {
          id: 1,
          apn: 'apn1',
          fips: '01700',
          state: 'CA',
          county: 'Los Angeles',
          address: 'somewhere st123',
          debt: 4000,
          isBiddedOn: false, //check
          isInPortfolio: false
  },
  {
          id: 2,
          apn: 'apn2',
          fips: '01744',
          state: 'FL',
          county: 'Miami',
          address: 'someplace st700',
          debt: 2000,
          isBiddedOn: false, //check
          isInPortfolio: true        
  },
  {
          id: 3,
          apn: 'apn3',
          fips: '05690',
          state: 'FL',
          county: 'Orlando',
          address: 'ExactPlace in st111',
          debt: 2500,
          isBiddedOn: false, //check
          isInPortfolio: false
  }
]; 
我还尝试使用
this.toggleProperty('isInProperty')但它对我也不起作用

这是html部分,按钮是:

 <script type="text/x-handlebars" data-template-name="liens">

    <h2 class="sub-header" >Liens</h2>
      <div class="table-responsive">
        <table class="table table-hover">
          <thead>
            <tr>
              <th>id</th>
              <th>apn</th>
              <th>fips code</th>
              <th>State</th>
              <th>County</th>
              <th>Address</th>
              <th>Debt</th>
              <th>Current Bid</th>
              <th>IsInPortfolio</th>
            </tr>
          <tbody>
          {{#each lien in model}}
            <tr>
              <td>{{lien.id}}</td>
              <td>{{lien.apn}}</td>
              <td>{{lien.fips}}</td>
              <td>{{lien.state}}</td>
              <td>{{lien.county}}</td>
              <td>{{lien.address}}</td>
              <td>${{lien.debt}}</td>
              <td>{{lien.isBiddedOn}}</td> <!--Check-->
              <td>{{lien.isInPortfolio}}</td>
              <td><button id='addLien' type='button' {{action 'addToPortfolio'}}>Add</button></td>
            </tr>
          {{/each}}
          </thead>
  </script>

留置权
身份证件
apn
fips代码
陈述
县
地址
债务
当前出价
伊辛波尔酒店
{{#模型中的每个留置权}
{{lien.id}
{{lien.apn}
{{lien.fips}
{{lien.state}
{{连县}}
{{lien.address}
${{留置权债务}
{{lien.isBiddedOn}
{{lien.isimportfolio}
添加
{{/每个}}
我做错了什么? 这是jsbin


提前谢谢

您在
#每个
助手中循环浏览留置权列表,但您试图更改单个留置权的属性。您需要使用
itemController
,它为单个留置权指定
controller
,如下所示:

{{#each lien in model itemController='lien'}}
然后,您需要实际创建lien控制器,并将
LiensController
中的逻辑放入
LiensController

App.LiensController = Ember.ArrayController.extend({
//   actions: {
//     addToPortfolio: function() {
//       this.set('isInPortfolio', true);
//       console.log('Action is Happening!');
//     }
//   }
});

App.LienController = Ember.ObjectController.extend({
  actions: {
    addToPortfolio: function() {
      this.set('isInPortfolio', true);
      console.log('Action is Happening!');
    }
  }
});
工作演示


更多关于
itemController

Nice的信息,那么每次我想更改#每个助手中的单个项目时,我都需要使用itemController吗?有没有一种方法不使用它?Ember 2.x正在尝试摆脱ItemController,请参见下面的讨论。无论哪种方式,您都需要某种方式来跟踪单个留置权的状态,而itemController在您的案例中似乎是一种很好的方法