小编OKU*_*UZA的帖子

尝试从对象调用get()或set()时,获取"未捕获的TypeError:undefined不是函数"

我一直在研究一个模仿这个emberjs教程的ember模板.但是,我不想为属性使用相同的对象,而是指定此操作来自的"项目"对象.它们存储在一个通过调用模型访问的数组中.当我将对象作为特定操作的参数传递时,我可以记录该对象并查看它是否已定义.但是,当我尝试设置或获取属性时,我收到错误:

Uncaught TypeError: undefined is not a function
Run Code Online (Sandbox Code Playgroud)

您可以看到我尝试使用的两种方法来解决错误,但是,每次调用仍然会导致错误.

方法一:

contract: function(project){
    var indx = this.projects.indexOf(project)
    console.log(indx);
    this.projects[indx].set('isExtended', false);
}
Run Code Online (Sandbox Code Playgroud)

方法二:

contract: function(project){
        project.set('isExtended', false);
    }
Run Code Online (Sandbox Code Playgroud)

我认为问题与存储在模型或项目中的数组有关.如果有人有任何建议如何纠正这种类型的错误,请告诉我.提前谢谢,这里是所有相关代码:

HTML:

<script type="text/x-handlebars" id="projects">
      <div class = "row bodeh">
        <div class ="col-lg-12">
            <h1>Projects</h1>
        </div>
        {{#each project in model}}
          <div {{bind-attr class=project.sass style=project.image}}>
            <div class="cont">
              <h1><a {{bind-attr href=project.lynk}}>{{project.title}}</a></h1>
               <p>{{project.body}}</p>
            </div>
            {{#if project.isExtended}}
              <div class="extraMat">
                <button type="button"{{action 'contract' project}}>Contract</button>
                <p>{{project.content}}</p>
              </div>
            {{else}}
              <button type="button"{{action 'expand' project}}>Expand</button>
            {{/if}}

          </div>
        {{/each}}
      </div>

    </script>
Run Code Online (Sandbox Code Playgroud)

EmberJS

App.ProjectsRoute …
Run Code Online (Sandbox Code Playgroud)

javascript ember.js

1
推荐指数
1
解决办法
526
查看次数

标签 统计

ember.js ×1

javascript ×1