Требуется заводская работа в угловых JS - PullRequest
0 голосов
/ 23 мая 2018

На самом деле я был новичком в angular js, я пытаюсь вызвать свою фабричную операцию в контроллер, я не знаю, где я ошибаюсь

, и мой js идет сюда

app.factory("myFactory",function(){
  var something = {};
  something.getsum = function() {
    $scope.service = " heloo people"
  }
  return something;
});


app.controller("helloController", function($scope,myFactory) {
  $scope.clickme = function() {
    $scope.service=myFactory.getsum();
  }
});

и мойHTML идет сюда

<div ng-controller="hello controller">
  <button ng-click="clickme"></button>
  <h2>{{service}}</h2>
</div>

и мой конфиг идет здесь:

$urlRouterProvider.otherwise("/index/utilise");
   $stateProvider
     .state('index', {
            abstract: true,
            url: "/index",
            templateUrl: "display.html",
              controller:'mainController',
          controllerAs: "parentCtrl",
        })
             .state('index.sample', {
            url: "/home",
            templateUrl: "content/sample.html",

        })
              .state('index.utilise', {
            url: "/utilise",
            templateUrl: "content/utilise.html",

        })
}) 

1 Ответ

0 голосов
/ 23 мая 2018

Первая проблема заключается в том, что для использования фабрики myFactory в вашем контроллере вам необходимо ввести ее в контроллер через внедрение зависимостей :

app.controller("helloController", function($scope, myFactory) {
  $scope.clickme = function() {
    $scope.service = myFactory.getsum();
  }
});

Второй проблемой вы бы не сталииспользуйте $scope в фабричном методе myFactory getsum(), вы просто вернете нужное вам значение:

app.factory("myFactory",function(){
  var something = {};
  something.getsum = function() {
    return " heloo people";
  }
  return something;
});

Третья проблема заключается в том, что ng-click фактически не выполнял функцию контроллера clickme, посколькубыла скобка () как и в любой функции JavaScript.Для фактического вызова функции на контроллере должно быть ng-click="clickme()":

<div ng-controller="helloController">
  <button ng-click="clickme()"></button>
  <h2>{{service}}</h2>
</div>

Наконец, неясно, какова структура вашего приложения на основе предоставленной вами конфигурации ui-routerui-router вам не нужно было бы использовать ng-controller, так как вы можете указать, какой контроллер должен использовать данный вид.Я создал несколько Plunkers, one и two , демонстрируя фабричную функциональность с контроллерами и без них, заданными для дочерних маршрутов.Этого должно быть более чем достаточно для демонстрации вызова функции контроллера в различных ситуациях.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...