我正在尝试访问控制器内的$http
以读取JSON
数据,其中从自定义指令属性中检索Filename。
这是我的代码
.directive("myCarousel", function () {
return {
restrict: 'EA',
scope: {
jsondatasource: '='
},
controller: "carouselCtrl",
link: function ($scope, element, attrs) {
$scope.jsondatasource = attrs.jsondatasource;
},
template: 'mytemplate.html'
}
})
.controller('carouselCtrl', function ($scope, $http) {
$scope.quotes = "";
$http.get($scope.jsondatasource).success(function (data) {
$scope.quotes = data;
});
// some function with operation on the data on quotes received by JSON data
})
和HTML调用
<my-carousel jsondatasource="data.json"> </my-carousel>
答案 0 :(得分:0)
究竟是什么问题?
你为你的指令定义了一个范围,所以你的链接函数是没用的,因为angular将$ scope.jsondatasource放到jsondatasource属性的评估中。
答案 1 :(得分:0)
试
if (in_array($value, [1, 3, 7, 8, 12])){
echo "test1";
} elseif (in_array($value, [5, 11, 44, 45])){
echo "test2";
}
答案 2 :(得分:0)
这样做的一种方法可能是将http.get放入控制器内部的函数中,附加到作用域并将jsonDataSource作为参数。并且在link函数中调用函数,并在指令属性中传递jsonSource。
.directive("myCarousel", function () {
return {
restrict: 'EA',
scope: {
jsondatasource: '='
},
controller: "carouselCtrl",
link: function ($scope, element, attrs, ctrl) {
ctrl.getQuotesData(attrs.jsondatasource);
},
template: 'mytemplate.html'
}
})
.controller('carouselCtrl', function ($scope, $http) {
$scope.quotes = "";
$scope.getQuotesData = function(source) {
$http.get(source).success(function (data) {
$scope.quotes = data;
});
};
// some function with operation on the data on quotes received by JSON data
})
答案 3 :(得分:0)
使用'@'代替'=' 所以 jsondatasource:'='
将变为 jsondatasource:'@' 将解决问题,控制器中可以使用jsondatasource值。