首先,我很抱歉,如果我将是混乱的,但我解决这个问题,整个晚上,我读过几十个SO问题和AngularJS的文章,所以我什至不知道,如果现在我知道哪来的问题:)
我有一个NG-app,其中时,我定义的几个属性,默认数据控制器$scope
,视图停止时得到这个数据变化以后编程更新。
这里是我的代码很短的例子:
...
config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/abc/:letter', {templateUrl: template, controller: FilterCtrl}).
otherwise({redirectTo: '/abc/a'});
}])
...
控制器:
function FilterCtrl($scope, $http, $routeParams) {
$scope.mainfilter = $routeParams.letter;
$scope.listItems = $http.post($scope.url, {'filterType': 'abc', 'letter': $routeParams.letter});
$scope.searchTitle = function(search) {
$scope.mainfilter = 'Film: ';
//just test code to see if the data changes, will be other http call actually
$scope.listItems = $http.post($scope.url, {'filterType': 'abc', 'letter': 'n'});
}
}
主要的标记,其中,所述视图被定义(Symfony2中,忽略了树枝逻辑PLS):
...
<div class="sort cell-1022 transparent-gray-back overflow-fix">
<span class="sort--title">Search by</span>
<select class="sort--selected chzn-select" ng-model="searchtitle" ng-change="searchTitle(searchtitle)">
<option value="">film title</option>
{% for id,title in titles %}
<option value="{{ id }}">{{ title }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="divider transparent"></div>
<article class="wrapper">
<div class="transparent-gray-back" ng-view>
</div>
</article>
模板的关键部分:
<div class="scroll-list nice-scrollbars" >
<span class="heading">{{ mainfilter.toUpperCase() }}</span>
<ul class="item-list">
<li ng-repeat="item in listItems.data | orderBy:order | filter:filter">
<a ng-click="getRelated(item._id)">{{ item.title }}</a>
</li>
</ul>
</div>
主要的问题是,当我有第一2行控制器的存在,该数据依赖于路线PARAMS正确初始化,但在执行后searchTitle()
它没有被更新。 当我删除前两行,由路线定义的数据没有被拉伸(明显),但searchTitle()
方法正确地填充两个mainfilter
字段和重复<li>
秒。 我绝望了,我建议什么是错与范围,但我目前超载的信息,并会感谢您的帮助,这样的!