javascript - angularJS指令如何暴露API給外面的controller使用?
問題描述
<button>expand</button><my-menu></my-menu>
我想點(diǎn)擊按鈕就展開menu,但怎么將menu的API暴露出來給button使用呢?或者有沒有其他更好的做法?
問題解答
回答1:不需要暴露什么API, 你只需要在指令上使用自定義屬性進(jìn)行數(shù)據(jù)雙向綁定即可。比如你需要顯示隱藏,你就在指令上使用一個(gè)display屬性,例如:
<my-menu display='someCtrlValue' ></my-menu>
然后在你的控制器中去控制這個(gè)值,比如
if(condition){ $scope.someCtrlValue = true; }
當(dāng)然指令中你只需要指定雙向綁定的屬性即可;
Module.directive('myMenu', function(){ return { scope: { display : ’=’ } ... } })回答2:
你可以在寫my-menu指令的時(shí)候,指定一個(gè)雙向綁定屬性,比如collapse,然后通過<my-menu collapse='val'></my-menu>這樣使用,然后通過button的ng-click事件控制val變量(true/false)就可以。然后在定義指令時(shí),通過獨(dú)立作用域?qū)崿F(xiàn)雙向綁定,可參考http://xgfe.github.io/2015/12...這篇文章
回答3:提供一個(gè)方法可以在指令中進(jìn)行emit, 然后controller進(jìn)行on監(jiān)聽另外,一般指令是外部像內(nèi)部傳值 才能達(dá)到指令的靈活性 ,如果這樣每次修改API不是得修改指令了?
相關(guān)文章:
1. python - oslo_config2. python - 如何統(tǒng)計(jì)一份英文 API 開發(fā)文檔(如 javadoc文檔)的詞頻?3. mysql優(yōu)化 - mysql 一張表如果不能確保字段列長度一致,是不是就不需要用到char。4. python - 請(qǐng)問這兩個(gè)地方是為什么呢?5. python - 為什么match匹配出來的結(jié)果是<_sre.SRE_Match object; span=(0, 54), match=’’>6. 請(qǐng)教一個(gè)mysql去重取最新記錄7. javascript - 按鈕鏈接到另一個(gè)網(wǎng)址 怎么通過百度統(tǒng)計(jì)計(jì)算按鈕的點(diǎn)擊數(shù)量8. 人工智能 - python 機(jī)器學(xué)習(xí) 醫(yī)療數(shù)據(jù) 怎么學(xué)9. 大家都用什么工具管理mysql數(shù)據(jù)庫?10. php - 有關(guān)sql語句反向LIKE的處理
