以下设置遇到很多麻烦(如果不进行重大重写,我无法更改)。该问题的概述是,当我通过 ng-include 从通过 ui-view(从 ui-router)加载的另一个部分嵌入部分时,ng-bind 不会绑定回控制器范围。
这是一个简化的示例...这是 UI 路由器
.state('investments', {
url: '/investments/:Uid',
abstract: true,
templateUrl: 'views/investments.html',
controller: 'InvestmentsCtrl',
parent: 'root'
})
.state('investments.funds', {
url: '',
templateUrl: 'views/investments/funds.html',
})
第一个部分 - 视图/投资.html包括一个 UI 视图
<div>
<section class="entity-details clearfix" ui-view></section>
</div>
加载资金.html其中包含以下内容
<tabset class="tabbable">
<tab>
<ng-include src="'/views/investments/_investment.html'"></ng-include>
</tab>
最后_investment.html有一个输入框,它绑定到控制器上的变量(InvestController)
<input type="text" placeholder="Search" class="search-query" ng-model="invsearch.query"/>
<button ng-click="update();">Update</button>
现在在控制器中,我有以下内容:
angular.module('cougarApp')
.controller('InvestController', function ($scope, $sce, $state, $debounce) {
$scope.invsearch = {};
$scope.update= function () {
console.log($scope.invsearch);
};
所以它非常简单(尽管所有嵌套包含)。当我单击调用 $scope.update() 的按钮时,底线 - 该函数在控制器中调用,但 $scope.invsearch 的值是一个空对象。即使我在文本框中输入值??
现在,当我不使用初始 ui-view 时,完全相同的代码可以工作。即,如果我的第一个模板直接调用 ng-include,那么一切正常。我对角度仍然有点陌生,显然我在这里缺少一些关于嵌套范围的东西。
请有人在这里帮助我。谢谢
尝试在投资中声明控制器.html像这样。
<div ng-controller="InvestmentsCtrl">
<section class="entity-details clearfix" ui-view></section>
</div>