Javascript 如何将ng模型传递给控制器
我有一个非常分层的JSON数据结构。我还有一个可重用(Django)模板,它绑定到该结构的一部分。所以,我需要知道对于任何给定的模板,我在结构中的位置。我快到了: 缺少的位能够将当前ng模型传递给控制器 下面是一些代码(但上面的JSFIDLE显示了更多细节): my_app.js:Javascript 如何将ng模型传递给控制器,javascript,angularjs,Javascript,Angularjs,我有一个非常分层的JSON数据结构。我还有一个可重用(Django)模板,它绑定到该结构的一部分。所以,我需要知道对于任何给定的模板,我在结构中的位置。我快到了: 缺少的位能够将当前ng模型传递给控制器 下面是一些代码(但上面的JSFIDLE显示了更多细节): my_app.js: var myApp = angular.module('myApp', []); myApp.factory('$global_services', ['$http', function($http) { v
var myApp = angular.module('myApp', []);
myApp.factory('$global_services', ['$http', function($http) {
var data = {};
$http.get("some_url", {format: "json"}) {
/* THIS REQUEST RETURNS A BIG CHUNK OF HIERARCHICAL JSON */
.success(function (data) {
data = data;
})
});
return {
getPathFromModel: a_clever_fn_i_wrote_that_returns_a_string(),
getModelFromPath: a_clever_fn_i_wrote_that_returns_a_model()
}
}]);
myApp.controller('MyController', ['$scope', '$attrs', '$global_services', function( $scope, $attrs, $global_services ) {
if ($attrs.currentModelPath) {
/* if you passed current_model_path, get the current_model too */
$scope.current_model_path = $attrs.currentModelPath;
$scope.current_model = $global_services.getModelFromPath($scope.current_model_path);
}
else if ($attrs.currentModel) {
/* if you passed current_model, get the current_model_path too */
$scope.current_model = $attrs.currentModel;
$scope.current_model_path = $global_services.getPathFromModel($scope.current_model);
}
}]);
my_template.html:
<div ng-app="myApp">
<div ng-controller="MyController" current_model_path="data">
{{current_model.name}}:
<ul ng-repeat="child in current_model.children">
<input type="text" ng-model="child.name"/> {{ child.name }}
<!-- LOOK: HERE IS A NESTED CONTROLLER -->
<div ng-controller="MyController" current_model="child">
{{current_model.name}}:
<ul ng-repeat="child in current_model.children">
<input type="text" ng-model="child.name"/> {{ child.name }}
</ul>
</div>
</ul>
</div>
</div>
{{current_model.name}}:
{{child.name}
{{current_model.name}}:
{{child.name}
问题出在嵌套控制器的“div”元素中;我将{{child}}
ng变量作为属性传递,但当控制器接收到它时,它只是将其解释为JavaScript字符串“child”。如何传递实际的模型对象
谢谢。
<div ng-controller="MyController" ng-init="data = child">
这将向名为data的内部作用域添加一个对象。
这将向名为data的内部作用域添加一个对象。谢谢。这似乎奏效了。然而,我认为使用ng init在ng repeat之外是不受欢迎的?现在一切都是不受欢迎的,请明智地使用谢谢。这似乎奏效了。然而,我认为使用ng init在ng repeat之外是不受欢迎的?现在一切都是不受欢迎的,只要明智地使用就好了