繁体   English   中英

如何冒泡将指令范围更改为其父角度的效果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM