javascript - angularJS指令如何暴露API給外面的controller使用?
問題描述
<button>expand</button><my-menu></my-menu>
我想點擊按鈕就展開menu,但怎么將menu的API暴露出來給button使用呢?或者有沒有其他更好的做法?
問題解答
回答1:不需要暴露什么API, 你只需要在指令上使用自定義屬性進(jìn)行數(shù)據(jù)雙向綁定即可。比如你需要顯示隱藏,你就在指令上使用一個display屬性,例如:
<my-menu display='someCtrlValue' ></my-menu>
然后在你的控制器中去控制這個值,比如
if(condition){ $scope.someCtrlValue = true; }
當(dāng)然指令中你只需要指定雙向綁定的屬性即可;
Module.directive('myMenu', function(){ return { scope: { display : ’=’ } ... } })回答2:
你可以在寫my-menu指令的時候,指定一個雙向綁定屬性,比如collapse,然后通過<my-menu collapse='val'></my-menu>這樣使用,然后通過button的ng-click事件控制val變量(true/false)就可以。然后在定義指令時,通過獨立作用域?qū)崿F(xiàn)雙向綁定,可參考http://xgfe.github.io/2015/12...這篇文章
回答3:提供一個方法可以在指令中進(jìn)行emit, 然后controller進(jìn)行on監(jiān)聽另外,一般指令是外部像內(nèi)部傳值 才能達(dá)到指令的靈活性 ,如果這樣每次修改API不是得修改指令了?
相關(guān)文章:
1. css - 新手做響應(yīng)式布局, 斷點過后右側(cè)出現(xiàn)空白,求幫助,謝謝。2. python - 啟動Eric6時報錯:’qscintilla_zh_CN’ could not be loaded3. javascript - vue 怎么渲染自定義組件4. javascript - 關(guān)于<a>元素與<input>元素的JS事件運行問題5. mysql - 查詢字段做了索引為什么不起效,還有查詢一個月的時候數(shù)據(jù)都是全部出來的,如果分拆3次的話就沒問題,為什么呢。6. mysql - 記得以前在哪里看過一個估算時間的網(wǎng)站7. 大家好,我想請問一下怎么做搜索欄能夠搜索到自己網(wǎng)站的內(nèi)容。8. ID主鍵不是自增的嗎 為什么還要加null9. MySQL中的enum類型有什么優(yōu)點?10. python - 安裝pyspider時出錯:No space left on device:
