2013-01-21 33 views
9

Tôi muốn làm một cái gì đó giống như thanh tiến trình, sẽ được điều khiển bởi ember. Vì vậy, trong mắt tôi, có hai và một nửa cách để đạt được điều này:truy cập tài sản của bộ điều khiển từ trong chế độ xem

  1. Có một người quan sát trong khiển, thiết lập yếu tố width khi được kích hoạt. Vấn đề: AFAIK, người ta không thể truy cập các phần tử DOM từ bên trong bộ điều khiển, ví dụ như cách bạn thực hiện nó trong chế độ xem this.$('#progress').

  2. Có người quan sát ở chế độ xem , quan sát thuộc tính của bộ điều khiển. Vấn đề: Tôi không biết, làm thế nào để quan sát (và truy cập) tài sản của một bộ điều khiển.

  3. (ràng buộc tài sản qua {{bindAttr}} của bộ điều khiển đến một data-progress="42" thuộc tính freaky và điều chỉnh các yếu tố width bất cứ khi nào giá trị của thuộc tính đã thay đổi)

Trả lời

13

Lựa chọn 2 là đặt cược tốt nhất của bạn.

Vấn đề: Tôi không biết, cách quan sát (và truy cập) thuộc tính của bộ điều khiển.

Ember sẽ đặt thuộc tính bộ điều khiển của chế độ xem khi chế độ xem được tạo, bạn có thể sử dụng thuộc tính đó để truy cập thuộc tính của bộ điều khiển.

App = Ember.Application.create(); 

App.ApplicationController = Ember.Controller.extend({ 
    percentComplete: '0' 
}); 

App.ProgressView = Ember.View.extend({ 
    percentChanged: function() { 
    percentString = (this.get('controller.percentComplete') + "%"); 
    this.$('.bar').css('width', percentString); 
    }.observes('controller.percentComplete').on('didInsertElement') 
}); 

Tôi đã đăng tải một tấm gương làm việc ở đây: http://jsbin.com/hitacomu/1/edit

+6

Một bộ điều khiển là một cái nhìn ?? – iConnor

+0

Tôi nhận xét của 2 @ Connor. Tôi rất bối rối bởi cách thức ember dường như quan tâm nhiều hơn đến cái tên, moreso hơn là loại, của các đối tượng để hooking ma thuật của nó. Ngoài ra, liên kết jsbin dường như không hoạt động vào lúc này. –

+1

@PatrickM xin lỗi đó là lỗi đánh máy, phải là 'App.ProgressController = Ember.Controller.extend'. Ngoài ra các jsfiddle đã phá vỡ gây ra nó tham chiếu js thư viện đã di chuyển. Tôi đã cập nhật cả câu trả lời và câu trả lời của tôi, hy vọng phiên bản mới hữu ích hơn. –

Các vấn đề liên quan