2016-02-04 80 views
0

我有一個頁面應用程序,它顯示一個用戶可編輯的表格。有一個我使用的日期選擇器,需要設置一些屬性和功能。我應該在哪裏把這些函數和變量當前放在我的Angularjs控制器中

那些目前坐在我的控制器,這是變得非常臃腫。約380條線,其中約130條是日期選擇代碼。

我可以把它們放在一個工廠中,並通過它來使用它們,但我不確定這是否會起作用,因爲許多這些屬性和功能都位於控制器範圍內。

任何建議將是有幫助的!

我使用的日期選擇是: Here

我提出.directive到自己的文件了。

回答

1

是的,你可以把它放在工廠或服務。你所要做的就是創建服務,將代碼放在那裏,然後將服務注入到控制器中。那麼你就可以從你的控制器訪問服務:

我不知道你用什麼角度語法,但這裏有一個例子:

angular.module('app', []) 
.service('datepicker', datepicker) 
.controller('controller', controller); 

function datepicker() { 
//codes 
} 

controller.$inject = ['datepicker']; 
function controller(datepicker) { 
//codes 
datepicker.function(); //call some datepicker service function 
} 
,如果你想從訪問服務功能

查看您需要做到以下幾點:

controller.$inject = ['datepicker']; 
function controller(datepicker) { 
//codes 
self.datepicker = datepicker; 
datepicker.function(); //call some datepicker service function 
} 

然後在視圖中你做:

<div ng-controller='controller as ctl'> 
{{ctl.datepicker.function()}} 
</div> 
+0

所以控制器$ injec t = ['datepicker']將允許從視圖中調用所有這些函數嗎? – Xgongiveittoya

+0

是啊在這裏,我會給你一個小提琴的例子:https://jsfiddle.net/ahmadabdul3/84esk49L/2/ –

+0

@Xgongiveittoya看到更新的答案 –

相關問題