2016-03-22 3 views
0

У меня здесь есть небольшая программа для списка дел. Он отлично работает, за исключением фильтра капитализации, чтобы загладить первое слово каждой строки. Это мешает мне ошибку инжектора, но я действительно не знаю, что неуместно.Фильтр затухания слова AngularJS

<!--TOOD LIST HTML --> 
<div ng-controller="todoController" id="todoCTRL"> 
<form name="frm" ng-submit="addTodo()"> 
    <input type="hidden" name="newtodo" ng-model="newTodo" required /> 
</form> 

<ol> 
    <li ng-repeat="todo in todos" id="listoftodos"> 
     <span>{{todo.title | capitalize}}</span> 
    </li> 
</ol> 
</div> 
<!-- TOOD LIST END HTML --> 

<!-- TODOLIST JS --> 
<script> 
// TODOLIST JS 
var app = angular.module('ToDo',[]); 
app.controller('todoController',['$scope',function($scope){ 
$scope.todos = [ 

]; 

$scope.addTodo = function(){ 
    $scope.todos.push({'title':$scope.newTodo}) 
    $scope.newTodo = '' 
} 

app.filter('capitalize', function() { 
return function(input) { 
    return (!!input) ? input.charAt(0).toUpperCase() + input.substr(1).toLowerCase() : ''; 
} 
}); 

// TODOLIST END JS 

UPDATE

Вот фактическая ошибка.

angular.js: 13294 Ошибка: [$ Инжектор: unpr]? $ http://errors.angularjs.org/1.5.2/ инжектор/unpr р0 = capitalizeFilterProvider% 20% 3C-% 20capitalizeFilter при Error (родной) на https://code.angularjs.org/1.5.2/angular.min.js:6:416 на https://code.angularjs.org/1.5.2/angular.min.js:43:7 в Object.d [также получить] (https://code.angularjs.org/1.5.2/angular.min.js:40:270) на https://code.angularjs.org/1.5.2/angular.min.js:43:69 в Object.d [как Get] (https://code.angularjs.org/1.5.2/angular.min.js:40:270) на https://code.angularjs.org/1.5.2/angular.min.js:157:155 на V() в https://code.angularjs.org/1.5.2/angular.min.js:116:359 при р (https://code.angularjs.org/1.5.2/angular.min.js:7:355)(anonymous функции) @ angular.js: 13294 (анонимно развлечениях (index): 76d.onresult @ annyang.min.js: 6 35www- widgetapi.js: 98 Не удалось выполнить 'postMessage' в 'DOMWindow': Исходное заданное значение ('https://localhost') не соответствует началу окна получателя ('http://localhost') .gK @ www-widgetapi.js: 98g.O @ WWW-widgetapi.js: 95

JSFIDDLE

ответ

1

когда вы делаете ToDo.filter вы хотите ToDo сослаться на свой угловой модуль, из кода он выглядит, как он будет назначен на контроллер. Вы хотите, чтобы это было так:

var ToDo = angular.module('ToDo',[]); 
ToDo.controller(...); 
ToDo.filter(...); 
+0

Вы были правы, но это была не проблема. Это странно, потому что я могу реализовать фильтры по умолчанию, например, например, с текущей настройкой. –

1

Не похоже, что ваш javascript хорошо сформирован - ваш контроллер неправильно закрыт. Кроме того, я бы рекомендовал быть последовательным между цепочки модулей или создания переменной приложения и определения ваших модулей. Попробуйте следующее:

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

ToDo.controller('todoController', ['$scope',function($scope){ 
    $scope.todos = []; 

    $scope.addTodo = function() { 
     $scope.todos.push({'title':$scope.newTodo}); 
     $scope.newTodo = ''; 
    } 
}]); 

ToDo.filter('capitalize', function() { 
    return function(input) { 
     return (!!input) ? input.charAt(0).toUpperCase() + input.substr(1).toLowerCase() : ''; 
    } 
}); 
+0

Вы были правы, но это была не проблема. –

+0

Какова фактическая ошибка, которую вы получаете? – Lex

+0

Я обновил сообщение с фактической ошибкой –

Смежные вопросы