在Angular指令中更新$ scope

时间:2016-02-03 01:04:30

标签: angularjs angularjs-directive angularjs-scope angularjs-resource

我使用了以下内容,经过多次挫折和谷歌搜索后,$scope$resource成功加载Marketplace.buy之后我无法更新myApp.directive('marketplaceBuy', function() { return { restrict: 'A', controller: ['$scope', "$timeout", "Marketplace", "Notification", "DataBank", function ($scope, $timeout, Marketplace, Notification, DataBank) { $scope.dooo = function(attrs) { Marketplace.buy({'item': attrs.itemId}, function(){ DataBank.query({word: "databanks"}, function(data){ $scope.data_bank = data.data; }); }, function(resp){ Notification.error(resp.data.message); }); } }], link: function ($scope, element, attrs) { element.bind('click', function () { $scope.dooo(attrs); }); } }; }); 项;

$scope.$apply()

使用data_bank错误。

修改

原始myControllers.controller('LocationListCtrl', ['$scope', 'DataBank', function($scope, DataBank) { $scope.data_bank = DataBank.query({word: "databanks"}); }); 就像这样加载

<body ng-cloak>
    <div ng-view>
         <div ng-repeat="blue_print in data_bank.blue_prints">{{ blue_print.name }}</div>
     </div>
</body>

它必然会像这样的视图

myApp.config(['$routeProvider', '$httpProvider',
  function($routeProvider, $httpProvider) {

      $httpProvider.interceptors.push('MyInterceptor');

      $routeProvider.
      when('/locations', {
        templateUrl: "/bundles/app/partials/locations.html",
        controller: 'LocationListCtrl'
      })
  }]);

最后使用路径

加载控制器
{{1}}

2 个答案:

答案 0 :(得分:0)

遵循model.value规则。

 $scope.data_bank.data = data.data;

显然,在模板中,使用{{data_bank.data}}

Miško Hevery talks about scope

答案 1 :(得分:0)

好的,事实证明我已经超越了自己,并没有看到整个画面。我的指令实际上没有我的ng-view。 #lame。

因为我正在使用Symfony和它自己的部分我没有意识到我包括来自Symfony的部分不在ng-view内,加上ng-view无论如何被我自己的Angular模板替换,无论如何让Symfony部分无论如何都不会有效。

但毕竟我仍然遇到双向绑定问题并让我的指令回写$scope上属性的所有实例,所以我放弃了它以支持新方法。