2014-01-15 4 views
0

Что здесь не так?Binding не работает в Angular

JSFiddle.

function SecondCtrl($scope, Data) { 
    $scope.data = Data; 

    $scope.reversedMessage = function(message) { 
    return message.split("").reverse().join(""); 
    }; 
} 
+1

вам не хватает много шагов ... как нет модуля создан ... контроллер не добавляется к модулю ... нет поставщика для 'Data' –

+0

простой образец с жестко закодированными данными http://jsfiddle.net/arunpjohny/mH5uH/1/ –

ответ

2

Как Arun отметил в своем комментарии, вы пропустили несколько ключевых элементов здесь:

  1. Вы не развернув приложение. Вам нужно будет использовать либо the ng-app directive, либо angular.bootstrap.

  2. Поскольку вы определяете SecondCtrl как глобальную функцию (это не самая лучшая практика), вам необходимо установить JSFiddle для загрузки JavaScript до onLoad; Я использовал No wrap - in <head>:

    screenshot

  3. Вы инъекционный Data в контроллер, но вы не определили Data как сервис. Для этого вам понадобится create a service.

Вот JSFiddle, который демонстрирует, как все будет выглядеть, если вы будете следовать передовой опыт и создать модуль для вашего контроллера в дополнение к фиксации других вопросов: http://jsfiddle.net/BinaryMuse/TcPGT/

<div ng-app='myApp'> 
    <div ng-controller="SecondCtrl"> 
    <input type="text" ng-model="data.message"> 
    <h1>{{ reversedMessage(data.message) }}</h1> 
    </div> 
</div> 
var app = angular.module('myApp', []); 

app.value('Data', { 
    message: 'This is my message.' 
}); 

app.controller('SecondCtrl', function($scope, Data) { 
    $scope.data = Data; 

    $scope.reversedMessage = function(message) { 
    return message.split("").reverse().join(""); 
    }; 
}); 
Смежные вопросы