[英]how to bubble up the effect of changing the scope of a directive to its parents angular
这是来自总的angular.js新手。
基本上,这是该原型网站的外观:
想法是,在初始页面加载时,导航搜索栏应被隐藏..而仅显示主页搜索栏。 用户在首页搜索栏中输入内容后,就会将搜索结果加载到地图上,使首页搜索栏消失,同时出现导航搜索栏
我读了很多有关角度指令的文章。以及指令如何采用其父作用域等,以及如何使隔离作用域以及如何选择要继承的父作用域
这就是我的jade / html的样子:
body(ng-controller='AppCtrl')
div(ng-view)
.container
.top_nav_bar
a.logo
a.menu_button
secondary_nav(ng-show="showNav", show-nav="showNav")
div(ng-controller="ListingsCtrl")
home_search(ng-controller="SearchCtrl",ng-show="showHomeSearch", show-home-search="showHomeSearch", show-nav="showNav")
内部控制器 :
.controller('AppCtrl',
..
$scope.showNav = true
.controller('ListingsCtrl'
..
showHomeSearch: true
内部指令:
.directive('secondaryNav',()->
restrict: 'AEC'
templateUrl: '/partials/secondary_nav.html'
scope:
showNav: '='
)
.directive('homeSearch', ->
scope:
map: '='
showHomeSearch: '='
showNav: '='
restrict: 'AEC'
replace: false
templateUrl: '/partials/home_search.html'
link: (scope, elem, attrs) ->
search_button = elem.find('.button')
search_button.bind "click", ->
scope.$apply ()->
scope.showHomeSearch = false
scope.showNav = true
])
基本上, home search
从其父控制器/范围继承showHomeSearch
的值(并将其设置为true)。因此,当我单击搜索按钮时。其值变为false,首页搜索实际上消失了。
至于nav search bar
..如果我在AppCtrl
中将$scope.showNav
设置$scope.showNav
false
,它的确消失了。 但随后单击搜索按钮并没有显示它。 即使我在homeSearch
指令中的scope.showNav = true
上设置了一个断点,我也可以看到scope.showNav
的值是false
并且它更改为true。
有什么帮助吗? 即使您向我展示了一种完全不同的整体方法!
我认为这是因为您的控制器$ scope.showNav是一个原始类型,并且您遇到了原型继承问题,描述如下: https : //github.com/angular/angular.js/wiki/Understanding-Scopes
尝试改用具有showNav属性的对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.