2014-09-23 70 views
0

仅供参考 - 我们使用Angular作为数据绑定功能。我们并没有试图将我们的应用程序开发为SPA,所以我不认为$ routeprovider是一个选项(如果我错了,请告诉我)。所以,这是问题所在。 当我使用ng-include将左侧导航作为部分加载时,该部分加载正常,但下拉不起作用,因为父级范围中的范围数据对部分页面不可用,因为ng-include创建了子范围。所以,当我尝试使用ng-include从部分访问它时,我需要作为url参数传递的url id的数组是'undefined'。什么是最好的方式来实现这个工作?AngularJS ng-include左侧导航

这是下拉菜单,它是导航的一部分。

<select class="form-control-menu input-xs" ng-model="selectprogram" ng-change="onChange()" ng-disabled="isLoading" 
ng-options="obj.name for obj in programList"> 
<option value="">PROGRAMS</option> 
</select> 

这是调用的onchange事件。

$scope.onChange = function() { 

     window.location.href = '../View/programs.html?reportid=' + $scope.reportID + '&programid=' + $scope.selectprogram.id; 

    } 

解决此问题的最佳方法是什么?

+1

采用了棱角分明只是它的数据结合能力类似于使用汽车刚玩的MP3。 – Shomz 2014-09-23 20:27:43

+0

你做你的老板想要的。对?但是如何对一些建设性的投入Shomz。谢谢 – Keith 2014-09-23 20:38:59

回答

0

你有两个选择:

  • 在共享属性父范围内使用的对象。由于作用域是原型继承的,所以更新将会持续。原始类型不适用。

  • 定义父范围上的onChange函数(由于原型继承也会持续)。

  • 使用子范围中的$ scope。$ parent。不推荐/不好的做法。

更深入的讨论,其相关:

AngularJS - losing scope when using ng-include

+0

onchange确实发生在父母身上。当我使用ng-include注入我的部分内容时,则强制创建我无权访问的子范围。子作用域属于ng-include指令。正确?我没有可引用父级的自定义指令。 – Keith 2014-09-23 20:49:51

+0

你可以发表小提琴吗?乐于帮助,但我不清楚您的范围如何分享。您无法从父作用域访问子作用域,因此无法使用。所以你要么通过原型继承来共享一个对象,要么你可以使用$ scope。$ broadcast来激发一个事件来共享数据。 – Daniel 2014-09-23 20:58:24