javascript - angularJS指令如何暴露API给外面的controller使用?
问题描述
<button>expand</button><my-menu></my-menu>
我想点击按钮就展开menu,但怎么将menu的API暴露出来给button使用呢?或者有没有其他更好的做法?
问题解答
回答1:不需要暴露什么API, 你只需要在指令上使用自定义属性进行数据双向绑定即可。比如你需要显示隐藏,你就在指令上使用一个display属性,例如:
<my-menu display='someCtrlValue' ></my-menu>
然后在你的控制器中去控制这个值,比如
if(condition){ $scope.someCtrlValue = true; }
当然指令中你只需要指定双向绑定的属性即可;
Module.directive('myMenu', function(){ return { scope: { display : ’=’ } ... } })回答2:
你可以在写my-menu指令的时候,指定一个双向绑定属性,比如collapse,然后通过<my-menu collapse='val'></my-menu>这样使用,然后通过button的ng-click事件控制val变量(true/false)就可以。然后在定义指令时,通过独立作用域实现双向绑定,可参考http://xgfe.github.io/2015/12...这篇文章
回答3:提供一个方法可以在指令中进行emit, 然后controller进行on监听另外,一般指令是外部像内部传值 才能达到指令的灵活性 ,如果这样每次修改API不是得修改指令了?
相关文章:
1. boot2docker无法启动2. webpack - vue-cli写的项目(本地跑没有问题),准备放到Nginx服务器上,有什么配置需要改的?还有怎么部署?3. javascript - iview 打包之后 找不到自带的icon图片,而且路径重复,点解4. 问题Unknown column ’’ in ’where clause’5. 微信公众号发送模板消息返回错误410006. 这是什么情况???7. java - 单元测试对dao层的测试有什么好的实践方案?8. javascript - 哪位大神指导下,如何实现今日头条头部导航列表,点那个类型,哪种类型就居中了?9. Android明明可以直接分享,为什么还要用微信开放平台、微博开放平台的sdk?10. javascript - 单页面应用怎么监听ios微信返回键?
