模板提供程序不会触发$ Scope Logic

时间:2016-06-11 20:00:04

标签: angularjs angular-ui-router

我正在使用角度ui-router,需要根据父(body)范围内的变量为给定状态显示不同的模板。但是,当我添加此$scope.data条件时,它不会触发。我甚至没有得到console.log()或任何网址更改。 :(

$stateProvider.state('map1', {
    url: "/content/sectionI",
    templateProvider: function($scope, $http, $stateParams) {
        console.log("Wowie!",$scope.data);
        if($scope.data.Section_I_Part_1_Complete == "0")
        {
        return $http({
        method: 'GET',
        url: 'http://example.com/contentMore',
        params: {
          request: "Section_I_Part_1_Complete",
          part: "1"
        }
      }).then(function successCallback(html) {
        return html.data;
      });
      }
else
    {
      return $http({
        method: 'GET',
        url: 'http://example.com/contentMore',
        params: {
          request: "Section_I_Unlocked",
          part: "map"
        }
      }).then(function successCallback(html) {
        return html.data;
      });
    }
       },
     controller: function($scope) {
           $scope.activeSection.activeSection = "notNone";
        }
  })

我该怎么做才能让模板根据父作用域中变量的值返回?

1 个答案:

答案 0 :(得分:1)

只需使用服务来存储数据并注入该服务。

templateProvider: function(myDataService) {

  var part = myDataService.Section_I_Part_1_Complete == "0" ? 1 : 'map';
  return $http.get('http://example.com/contentMore', {
    params: {
      request: "Section_I_Part_1_Complete",
      part: part
    }
  }).then(function(response) {
    return response.data;
  });
}