javascript - 将作用域传递给 AngularJS 上的 Service

标签 javascript angularjs angularjs-scope

我对 AngularJS 还很陌生,我想将范围传递给服务,以便我可以根据scope.value 执行标签搜索。

<div data-ng-app="instaSearch" data-ng-controller="search">

  <div>
    <input type="text" value={{value}} data-ng-model='value'/>
  </div>

 <p data-ng-hide="value">type a tag</p>
 <p data-ng-show="value">...looking for {{value}}</p>


<ul>

  <li data-ng-repeat="r in results">
    <a>
      <img ng-src="{{r.images.thumbnail.url}}"  alt="" />
    </a>
  </li>

</ul>  

</div>

这是 JS

var app = angular.module('instaSearch', ['ngResource']);

app.factory('instagram', function($resource){

    return {
    searchTag: function(callback){

      var api = $resource('https://api.instagram.com/v1/tags/:tag/media/recent?client_id=:client_id&callback=JSON_CALLBACK',{
                client_id: '3e65f044fc3542149bcb9710c7b9dc6c',
        tag:'dog'
            },{
                fetch:{method:'JSONP'}
            });

            api.fetch(function(response){
                callback(response.data);

            });
    }
    }

});

app.controller('search', function($scope, instagram){

  $scope.$watch('value', function(){
    $scope.results = [];

    instagram.searchTag(function(data){
      $scope.results = data;
    });
  });

});

working example

最佳答案

您可以使用$scope.value访问该值。

app.factory('instagram', function ($resource) {
    return {
        searchTag: function (tag, callback) {
            var api = $resource('https://api.instagram.com/v1/tags/:tag/media/recent?client_id=:client_id&callback=JSON_CALLBACK', {
                client_id: '3e65f044fc3542149bcb9710c7b9dc6c',
                tag: tag
            }, {
                fetch: {
                    method: 'JSONP'
                }
            });

            api.fetch(function (response) {
                callback(response.data);

            });
        }
    }

});

app.controller('search', function ($scope, instagram) {
    $scope.$watch('value', function () {
        $scope.results = [];
        instagram.searchTag($scope.value, function (data) {
            $scope.results = data;
        });
    });
});

演示:http://codepen.io/anon/pen/GHbIl

关于javascript - 将作用域传递给 AngularJS 上的 Service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934154/

相关文章:

javascript - ngresource 访问属性资源时出错

javascript - 为什么这个自定义提交不起作用?

AngularJS:混淆 $scope 中的对象引用

javascript - Bootstrap Accordion 元素不会关闭

javascript - Eloquent JS 中逻辑运算符示例的解释

angularjs - 注入(inject)常​​量时引发未知提供程序的错误

javascript - Node.js 服务器启动时间非常慢

javascript - Angular OrderBy 索引不起作用

javascript - AngularJS - 对同一表单多次 httpget

angularjs - 更改 angularjs 中子范围的对象