Использование ngReact с ASP .NET MVC

#angularjs #asp.net-mvc #reactjs #ngreact

#angularjs #asp.net-mvc #reactjs #ngreact

Вопрос:

У меня есть тестовый проект MVC, в котором я пытаюсь использовать компоненты React внутри директив Angular. Он отобразит директиву, но любые реквизиты, которые я передаю, не определены. Вот мои файлы:

~/Scripts/Directives/HelloDirective.js :

 var Hello = React.createClass({

    render: function () {
        return React.DOM.span(null,
          'Hello '   this.props.email
        );
    }
});

angular.module('App').value('Hello', Hello);

angular.module('App')
.directive( 'hello', function( reactDirective ) {
  return reactDirective( Hello, ['email'] );
});
  

Моя структура папок для моих представлений выглядит следующим образом:

~/Views/Dashboard/Index.cshtml — это мой основной вид, который имеет ng-view

~/Views/Dashboard/Dash.cshtml — это помещается в основное представление

Внутри Dash.cshtml у меня есть

 <div ng-controller="DashboardController" class="btn-group">
    <hello email="{{name}}"></hello>
</div>
  

Вот мой DashboardController.js файл:

 angular.module("App")
.controller("DashboardController", ['$scope', 'Welcome', '$cookies', function ($scope, Welcome, $cookies) {
    Welcome.name().success(function (data) {
        $scope.name = data.name;
    });

    $scope.ChangeName = function (val) {
        Welcome.EditName(val).success(function (data) {

        });
    };
    /*
    $scope.isOff() = function () {
        var value = $cookies.get('Off');
        return value === null;
    }

    $scope.Off = function () {
        $cookies.put('Off', 'This turns the green button off');
    }
    $scope.On = function () {
        $cookies.remove('Off');
    }
    */
}]);
  

Как только страница завершит загрузку, все, что отображается, будет Hello undefined .

По какой-то причине реквизит электронной почты внутри тега hello не читается, не распознается или что-то в этомроде.

Я уже протестировал, чтобы убедиться, что мой WelcomeFactory возвращает данные, просто отображая {{name}} на экране, и это работает просто отлично.

Может кто-нибудь сказать мне, где я ошибся?

Спасибо!

Ответ №1:

Итак, ответ на этот вопрос был раздражающе простым. На самом деле все сводилось к синтаксису. Под этим я подразумеваю компонент React, который у меня выглядел следующим образом:

 <hello email="{{name}}"></hello>
  

Я продолжал получать undefined для электронного письма, поскольку оказалось, что проблема заключалась в фигурных скобках. Как только я их удалил, компонент React выглядел следующим образом:

 <hello email="name"></hello>
  

Затем я начал выводить значение на экран.

Надеюсь, это поможет кому-то еще разобраться в этой проблеме!