当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Embeer.js ArrayProxy removeObserver()用法及代码示例


Ember.js 是一个开源 JavaScript 框架,用于开发基于 Model-View-Controller (MVC) 架构的大型客户端 Web 应用程序。 Ember.js是使用最广泛的前端应用框架之一。它的目的是加速开发并提高生产力。目前,它被大量网站使用,包括 Square、Discourse、Groupon、Linked In、Live Nation、Twitch 和 Chipotle。

ArrayProxy的removeObserver()方法是用于移除对象的已注册观察者的方法。此方法断开 key 和观察者的连接。

用法:

this.object.removeObserver( key, target, method, sync );

参数:

  • key: 这是观察者将从中移除的。
  • target: 它是一个对象,是 key 的所有者。
  • method: 它是根据观察者命令调用的。
  • sync: 它指定观察者是否异步。

返回类型:可观察到的。

安装和运行 Ember.js 的步骤:

第 1 步:要运行以下示例,您需要有一个 ember 项目。要创建一个,您需要先安装ember-cli。在终端中写入以下代码:

npm install ember-cli

第 2 步:现在您可以通过输入以下代码来创建项目:

ember new <project-name> --lang en

要启动服务器,请键入:

ember serve

示例 1:键入以下代码以生成本示例的路由:

ember generate route test1

应用程序/路线/test1.js

Javascript


import Route from '@ember/routing/route';
import ArrayProxy from '@ember/object';
import { computed } from '@ember/object';
import Ember from 'ember';
const Student = ArrayProxy.extend({
    Changed: Ember.observer('marks', function () {
        console.log(`Marks of ${this.name} changed`);
    }),
});
export default class StudentsRoute extends Route {
    student = Student.create({
        name: 'Arun Verma',
        class: 12,
        Branch: 'Commerce',
        gender: 'M',
        marks: 73,
        mobile: '837483783',
        Roll_No: '1238372',
    })
    model() {
        return this.student;
    }
    setupController(controller, model) {
        super.setupController(controller, model);
        controller.set('student', this.student);
    }
}

应用程序/控制器/test1.js

Javascript


import Ember from 'ember';
import EmberObject from '@ember/object';
import { cacheFor, destroy } from '@ember/object';
export default Ember.Controller.extend({
    actions: {
        del() {
            let temp = this.student.removeObserver('marks', this.student,
                'Changed');
            console.log('Observer removed!!')
        },
        Change() {
            this.student.set('marks', this.student.get('marks') + 10);
        },
    }
});

应用程序/模板/test1.hbs

HTML


{{page-title "ArrayProxy"}}
<table>
    <h1>Student's Details:</h1>
    <div><b>Name:</b> {{this.student.name}}</div>
    <div><b>Gender:</b> {{this.student.gender}}</div>
    <div><b>Class:</b> {{this.student.class}}</div>
    <div><b>Mobile:</b> {{this.student.mobile}}</div>
    <div><b>Grade:</b> {{this.student.Grade}}</div>
    <div><b>Marks:</b> {{this.student.marks}}</div>
    <div><b>Branch:</b> {{this.student.Branch}}</div>
     
</table>
<br /><br/>
<input
    type="button"
    id="remove"
    value="Remove Observer"
    {{action 'del'}}
/><br /><br/>
<input
    type="button"
    id="Change"
    value="Change The Marks"
    {{action 'Change'}}
/>
{{outlet}}

输出:

删除观察者输出1

示例 2:键入以下代码以生成本示例的路由:

ember generate route test2

应用程序/路线/test2.js

Javascript


import Route from '@ember/routing/route';
import { computed } from '@ember/object';
import { tracked } from '@glimmer/tracking';
import Ember from 'ember';
import ArrayProxy from '@ember/object/proxy';
const Employee = ArrayProxy.extend({
    fullName: computed('firstName', 'lastName', function () {
        return this.get('firstName') + ' ' +
            this.get('lastName');
    }),
    change: Ember.observer('age', function () {
        console.log(`Age is changed`);
    }),
});
export default class DetailsRoute extends Route {
    value = 34;
    @tracked
    person = Employee.create({
        firstName: 'Rohil',
        lastName: 'Sahu',
        mobile: '928393839',
        age: 32,
        language: 'Hindi',
        country: 'India',
        gender: 'M',
        zipCode: '9384983',
        salary: 120000,
    });
    model() {
        return this.person
    }
    setupController(controller, model) {
        super.setupController(controller, model);
        controller.set('person', this.person);
        controller.set('value', this.value);
    }
}

应用程序/控制器/test2.js

Javascript


import Ember from 'ember';
import EmberObject from '@ember/object';
export default Ember.Controller.extend({
    actions: {
        change(data) {
            this.person.set('age', data);
        },
        remove() {
            this.person.removeObserver('age', this.person, 'change');
            console.log('Observer Removed!!!')
        }
    }
});

应用程序/模板/test2.hbs

HTML


{{page-title "ArrayProxy"}}
<table>
    <h1>Employee's Details: </h1>
    <div><b>Name:</b> {{this.person.fullName}}</div>
    <div><b>Gender:</b> {{this.person.gender}}</div>
    <div><b>Country:</b> {{this.person.country}}</div>
    <div><b>Salary:</b> {{this.person.salary}}</div>
    <div><b>Zip Code:</b> {{this.person.zipCode}}</div>
    <div><b>Language Speaks:</b>{{this.person.language}}</div>
    <div><b>Mobile No.:</b>{{this.person.mobile}}</div>
    <div><b>Age:</b> {{this.person.age}}</div>
</table>
<br />
{{input value=this.value}}
<br/>
<input
    type="button"
    id="Change"
    value="Change Age"
    {{action 'change'this.value}}
><br/><br/>
<input
    type="button"
    id="remove"
    value="Remove Observer"
    {{action 'remove'}}
>
{{outlet}}

输出:

删除观察者输出2

参考:https://api.emberjs.com/ember/4.9/classes/ArrayProxy/methods/removeObserver?anchor=removeObserver



相关用法


注:本文由纯净天空筛选整理自satyam00so大神的英文原创作品 Ember.js ArrayProxy removeObserver() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。