2013-04-15 30 views
12

Tôi mới sử dụng angularjs. Tôi đang cố gắng tìm hiểu khi nào nên sử dụng giá trị so với nhà máy như một dịch vụ. Đây là mã đơn giản của tôi từ hướng dẫn egghead.io:giá trị angularjs vs nhà máy

.value('Data', function(){ 
    return {message:"I am data from a service"}; 
    }) 

Data.message bị ràng buộc vào trường nhập. Khi tôi bắt đầu trang, không có gì trong các trường nhập. Nếu tôi thay đổi giá trị thành nhà máy, thông báo mặc định sẽ xuất hiện trong trường nhập.

Đây là contoller:

controller('FirstCtrl', ['$scope','Data',function($scope, Data) { 
    $scope.data = Data; 
    console.log('exiting first controller'); 
    }]) 

và tập tin chỉ mục:

<div ng-controller="FirstCtrl"> 
    <input type="text" ng-model="data.message"> 
    <h1>{{data.message}}</h1> 
</div> 

Tại sao trống trang khi sử dụng giá trị? Giả định của tôi là giá trị không được tính toán hoặc tính toán khi ứng dụng bắt đầu trong khi nhà máy là?

Ngoài ra, tôi có thể tìm thấy một số tài liệu về $ cung cấp ở đâu? Cảm ơn tất cả.

+3

Một chút bit không liên quan này đã giúp tôi trong một tình huống tương tự. so với dịch vụ so với cung cấp https://gist.github.com/Mithrandir0x/3639232. Để tăng cơ hội nhận được câu trả lời tốt hơn, sẽ hữu ích nếu bạn có thể cung cấp một ví dụ thông qua jsFiddle hoặc một dịch vụ tương tự. – TheHippo

+0

Cảm ơn bạn đã liên kết hữu ích. –

Trả lời

19

Đặt giá trị cho một đối tượng, chứ không phải là một chức năng:

app.value('Data', {message:"I am data from a service"}); 

Plunker

Xem thêm provide.value(), và điều này video about $provide (giá trị, liên tục, dịch vụ, nhà máy, trang trí, nhà cung cấp)

+0

Cảm ơn bạn rất nhiều vì video. Làm rõ rất nhiều. –

-1

Bạn nên khai báo bộ điều khiển là

app.controller('DataController', ['Data', function DataController(Data){ 
     this.data = Data; 
    }]); 

và sau đó sử dụng nó trong trang của bạn như trong mã của tôi

<div ng-controller='DataController as dataController'> 
     {{dataController.data()}} 
    </div> 
Các vấn đề liên quan