我正在使用这样的$ http请求:
$http({
method: 'POST',
url: url,
data : {'some':'data'},
}).
success(function(data, status, headers, config) {
container.css({ opacity : '0.0' }).html( data ).delay(50).animate({ opacity : '1.0' }, 300);
})
$ http响应的开头如下:
<div class="tree" ng-controller="systemDataTree"><ul><li>
一切都按照应有的方式加载,我不想使用路线。
正在加载的内容中将包含ng-controller="myController"
,但在加载后不会执行。
如何让它执行加载HTML响应的控制器?
我不想在$http.success
内部执行控制器,因为会使用许多不同的控制器
答案 0 :(得分:0)
如果错误,请纠正我:你想在响应来自网络服务后运行第二个控制器吗?正确的吗?
为此您可以将模板移动到ng-template
<script type="text/ng-template" id="innerTemplate">
<div ng-controller="myFirstCtrl">
</div>
</script>
在主视图中,您可以拥有这样的
<div ng-controller="controllerWhichCallsHttp">
your html here
<div ng-include="variable"></div>
</div>
controllerWhichCallsHttp将具有以下$ http
$http({
method: 'POST',
url: url,
data : {'some':'data'},
}).success(function(data, status, headers, config) {
$scope.variable="innerTemplate"; //i.e. after you get the response set the value of the variable with the id of the template and then myFirstCtrl will execute
container.css({ opacity : '0.0' }).html( data ).delay(50).animate({ opacity : '1.0' }, 300);
})
答案 1 :(得分:0)
DONE ::
这是解决方案:
success(function(data, status, headers, config) {
container.css({ opacity : '0.0' }).html( data ).delay(50).animate({ opacity : '1.0' }, 300);
})
而不是附加纯data
使用$compile(data)($scope)
,您可以在里面添加任意数量的控制器。
像这样你可以自定义加载你的东西并使用你想要的控制器