2015-11-23 66 views
0

我有我向鏈路函數內部此功能:

<ul ng-model="selectedObject"> 
    <li>{{ object.label }}</li> 
</ul> 
<button ng-click="resetData()">reset!</button> 
<directive data={{ selectedObject.dataset }}></directive> 

,並在我的app.controller:

scope.$parent.resetData(){ 
    scope.data = ''; 
} 
在我的HTML

$scope.$watch('selectedObject', function(){ 
    $scope.resetData(); //this cant be used 
}); 

我不能在控制器範圍中使用$ scope.reset(),有沒有辦法可以在si中重用該函數最簡單的方式,而不是做這個數據集的工廠/服務?

+0

你能解釋爲什麼你不能使用控制器範圍中的$ scope.reset()'?我並沒有一路追隨。 – toddmo

+0

這應該是我在我的鏈接指令功能,我想在我的app.controller中使用,該功能不工作,但我可以在模板中使用它 – AbdulHamid

+0

,但你可以說'scope.data ='''在控制器中,對嗎? – toddmo

回答

1

給出指令selectedObject而不是selectedObject.dataset並讓它在內部管理重置。

它會被封裝得更好,這會很好。如果更改selectedObject總是重置數據,則將該指令視爲組件並且具有內部邏輯使其更加獨立。這樣,外部代碼不必擔心幫助指令執行其工作。

+0

我努力做到這一點!謝謝 – AbdulHamid

0

如果你插入CTRL參數的鏈接功能 您可以直接跟父控制器

link: function(scope, el, attr, ctrl) { 
     scope.isSmall = function(){ 
      return ctrl.isSmall(); 
     }; 
    } 

至少,它是如何工作的,我

+0

感謝他做到了工作,但之後我不得不面對一個全新的不同的事情來修復 – AbdulHamid

+0

@AbdulHamid是的,這對我來說很重要。 – sillysicko

相關問題