Có cách nào chúng ta có thể tránh chạy mã quan sát được trong một vài trường hợp không?Cách đặt thuộc tính có thể quan sát được nhưng không chạy chức năng quan sát được trong một vài trường hợp trong EmberJS
Tôi đã thử như thế nào? Cách duy nhất tôi tìm thấy để tránh là bằng cách thêm thuộc tính mới vào dạng xem dưới dạng cờ sẽ được kiểm tra trước khi chạy mã phương thức quan sát được.
Đây là jsfiddle liên kết cơ bản đang cung cấp với chức năng quan sát cơ bản HTML
<script type="text/x-handlebars" data-template-name="application">
{{view MyApp.MyContainerView name="Santa Claus"}}
</script>
<script type="text/x-handlebars" data-template-name="foo">
{{view.testProp}}
</script>
JS
MyApp = Ember.Application.create({
autoinit: false
});
MyApp.router = Ember.Router.create({
root: Ember.Route.extend({
index: Ember.Route.extend({
route: '/'
})
})
});
MyApp.ApplicationController = Ember.Controller.extend({});
MyApp.MyContainerView = Em.ContainerView.extend({
childViews: ['foo'],
foo: Em.View.extend({
testProp: 100,
testPropObservable: function(){
console.log("Prop Observed");
}.observes('testProp'),
init: function() {
this._super();
this.set('testProp', 200);//i want to avoid obeserver here
},
templateName: 'foo'
})
});
MyApp.initialize(MyApp.router);
Yea h, bạn chỉ nhanh hơn :), +1 BTW :) –
mã đó chỉ là một ví dụ để làm việc trên nó .. tôi đồng ý rằng chúng tôi có thể thêm người quan sát trong quá trình khởi tạo .. tôi muốn biết nếu có anyway chúng ta có thể tránh cuộc gọi đến người quan sát trước khi đặt giá trị cho thuộc tính ... – thecodejack
Không chắc chắn bạn đang hỏi chính xác điều gì. "Công việc" của một người quan sát là được thông báo khi một tài sản thay đổi. Để chắc chắn bạn có thể tránh các cuộc gọi đến các nhà quan sát bằng cách chờ đến sau để tạo chúng, như trong ví dụ trên. Một biến thể sẽ là có một người quan sát cho biết thêm một số người quan sát khác và có thể tự loại bỏ. Với điều đó tại chỗ bạn có thể 'tránh' người quan sát chính trên tập hợp ban đầu của tài sản. Đó là những gì bạn đang đi? –