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. angular.js - angular做點(diǎn)擊購買時(shí)的遮罩層2. android - NavigationView 的側(cè)滑菜單中如何保存新增項(xiàng)(通過程序添加)3. 請(qǐng)教!!!本地laravel項(xiàng)目我想本地運(yùn)行,怎么在本地訪問控制器里的方法。4. 連續(xù)的數(shù)值怎么用分組顯示,求大神指導(dǎo),求各位老師幫忙5. 請(qǐng)問這位老師的PHPSTORM主題是自定義的嗎6. 關(guān)于thinkphp 5.1中,ajax提交數(shù)據(jù)url的格式寫法,加花括號(hào)就出錯(cuò),請(qǐng)老師指點(diǎn)7. http://run.php.cn/在線PHP程序運(yùn)行結(jié)果不正確8. 老師 我是一個(gè)沒有學(xué)過php語言的準(zhǔn)畢業(yè)生 我希望您能幫我一下9. PHP注冊(cè)功能10. tp5 不同控制器中的變量調(diào)用問題
