1

В этой скрипке я пытающегося для форматирования текста, передавая его на службу, но услуга не вызывается:AngularJS службы не вызывается

http://jsfiddle.net/7MhLd/1038/

код:

<div ng-controller="MyCtrl"> 
    <div ng-repeat="line in lines"> 
     <div class="preview">{{parseText(line.text)}}</div> 
    </div> 
</div> 

var myApp = angular.module('myApp', []); 

myApp.factory('parseText', function(data) { 
    return "textParsed" 
}); 

function MyCtrl($scope) { 
    $scope.lines = [{ 
     text: 'res1'}, 
    { 
     text: 'res2'}]; 
} 

Я возвращаю textParsed, чтобы показать, что услуга не вызывается - текст не отображается в div. Как вызвать эту услугу & параметр пропуска line.text?

ответ

2

Вы сделали некоторые ошибки при создании приложения.

  • Declare ng-app="myApp" над главным DIV
  • Вводят завод зависимость внутри вашего приложения.
  • Обратный объект с завода, который может иметь серверный метод, такой как разбор
  • Используйте модульный подход при добавлении контроллера, подключите угловой компонент, создав модуль.

Markup

<div ng-app="myApp" ng-controller="MyCtrl"> 
    <div ng-repeat="line in lines"> 
     <div class="preview">{{parseText.parse(line.text)}}</div> 
    </div> 
</div> 

Код

var myApp = angular.module('myApp', []); 

myApp.factory('parseText', function() { 

    var parse = function(val){ 
     //you could have parsing logic here over your variable 
     return val + " something"; 
    } 
    return { 
     parse: parse 
    } 
}); 

myApp.controller('MyCtrl', MyCtrl) 

function MyCtrl($scope, parseText) { 
    $scope.parseText = parseText; 
    $scope.lines = [{ 
     text: 'res1' 
    }, { 
     text: 'res2' 
    }]; 
}; 

Working Fiddle

+0

, но как передать парам "line.text" на обслуживание? –

+0

@ сине-небо смотреть на редактирование –