0
我在JSON中擁有非常分層的數據結構。我也有一個可重用的(Django)模板,它被綁定到該結構的一部分。所以,我需要知道在任何給定的模板中我在哪個結構中。我幾乎有:如何將ng-model傳遞給控制器
http://jsfiddle.net/trubliphone/fd64rn3y/
的缺失位是能夠在當前NG-模型傳遞給控制器。
下面是一些代碼(但高於的jsfiddle示出更詳細地):
my_app.js:
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>
的問題是在嵌套控制器的「div」元素;我將 ng變量作爲屬性傳遞,但是當控制器收到它時,它只是將其解釋爲JavaScript字符串「child」。我怎樣才能傳遞實際的模型對象?
謝謝。
謝謝。這似乎工作。但是,我認爲使用ng-init在ng-repeat之外被忽視了? – trubliphone
這些日子裏一切都皺起了眉頭只是明智地使用 – racamp101
想要標記這個答案? – racamp101