我正在尝试构建自定义单选按钮,我发现我的控制器正在为每个实例执行两次。 我没有两次指定视图控制器。这似乎是常见的问题。我正在使用角度路由,相关的代码片段就是:
$routeProvider.when('/:action', {
templateUrl: function (params) {
if (!params.action) params.action = 'Index';
return '_' + params['action'];
}
});
我在模板中使用ng-controller
。触发了routeChangeSuccessful事件(或者它所调用的任何事件),它会正常编译所有内容,但它似乎会跟进一些后期链接函数,它也可以编译所有内容;因此是双重实例。
我做错了什么?如何避免重复通话?
<小时/> 更新
我发现它正在重新编译初始视图,无论是什么,当通过AngularJS进行路由时。我可以通过添加一个始终被击中的秘密空白页来解决这个问题(我正在.NET MVC项目中开发,所以我可以通过MVC路由来控制它),但这看起来很愚蠢。
为什么ngRoute每次重新编译初始视图?有优雅的解决方法吗?
答案 0 :(得分:0)
最后我检查过,ngView不会阻止最初提取的模板的编译,实际上它在视图更改之前重新编译它,然后替换它并编译由ngRoute提取的模板。
要解决此问题,请仅让AngularJS请求返回模板。否则返回空白模板。我通过让AngularJS请求包含下划线前缀来处理这个问题。在MVC路由中,如果下划线在那里,则返回请求的部分;否则,用空体返回布局。