我正在使用指令從<script>
元素讀取json數據,只要我的ng-scope
是像data
這樣的第一級屬性,此工作正常。出於某種原因,我沒有獲取我的對象的第二層或更深層屬性中的數據,例如data.search
。我想這又是一個奇怪的範圍問題,或者我還沒有完全理解。AngularJS指令不設置作用域對象的第二級
爲什麼設置第一級而不是第二級屬性?
JS
angular.module('app', [
]);
angular.module('app').directive('jsonData', [function() {
return {
restrict: 'A',
link: function (scope, element, attributes, controller) {
scope[attributes.ngModel] = JSON.parse(element.html());
}
};
}]);
angular.module('app').controller('TestController', [
'$scope',
function ($scope) {
$scope.searchTest = {};
$scope.data = {
search: {
}
};
}]);
標記:
<head>
<link rel="stylesheet" href="style.css">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.0-beta.4/angular.min.js"></script>
<script src="script.js"></script>
</head>
<body ng-controller="TestController">
<style>
pre { border: 1px solid red; padding: 5px ;}
</style>
<h3>2nd level</h3>
<script type="application/json" json-data ng-model="data.search">
{"price_from":"3","price_to":"412"}
</script>
<pre>{{data.search | json}}</pre>
<h3>1st level</h3>
<script type="application/json" json-data ng-model="data">
{"price_from":"3","price_to":"412"}
</script>
<pre>{{data | json}}</pre>
</body>
</html>
我認爲第二次調用指令(第一級)會覆蓋所有的數據對象... – Kinnza
另外一些'scope [attributes.ngModel]'是不正確的。 它會轉化爲範圍['data.search'],我認爲這是不同的scope.data.search – Kinnza
爲什麼你會需要這樣做?你想解決什麼問題? – charlietfl