Свойство области видимости angular.js @local становится неопределенным, если мы инициализируем его как null

0

я сделал пользовательскую угловую директиву

 <location zipcode="35423" cityname="" statecode=""></location> 

и возьми

  scope: {
                    zipcode: "@",
                    cityname: "@",
                    statecode: "@"
                },

в contoller этой директивы:

 controller: function ($scope, $filter) {
$scope.zipcode = "35423" // here i get the values
$scope.cityname = undefined // ?? why?
$scope.statecode= undefined // ?? why?
}

я хочу $scope.cityname = ""

в действительности я использую приложение mvc

zipcode="@ZipCode" cityname="@City" statecode="@StateCode"

и возможно, что City может быть нулевым

Теги:

2 ответа

0
Лучший ответ

Вы можете установить значение свойств области "" если они не определены так: $scope.cityname = $scope.cityname || ""; $scope.cityname = $scope.cityname || ""; ,

Я не понимаю, почему вы это сделаете, поскольку "" и undefined оба оцениваются как false.

  • 0
    ну, я передаю значения из переменной mvc в директиву ': cityname = "@ defaultCity" statecode = "@ defaultStateCode">'
  • 0
    я обновил вопрос!
0

Это похоже на проблему изоляции области.

Что происходит, так это то, что ваша директива будет заполнять область действия, используя три значения из контроллера, и поскольку вы используете @ в изоляции по объему, ваша директива будет принимать значения из контроллера и связывать их в одну сторону, независимо от того, определены они или нет.

Поскольку привязка является одним из способов, изменения в контроллере отразятся в директиве, но изменения этих значений в директиве не отразятся в контроллере. Это означает, что если вы измените значение в директиве, например setNameName Islamabad, то контроллер не узнает об этом изменении, и он сохранит с ним старое значение, которое вполне может быть неопределенным, если переменная никогда не была инициализирована.

Если вы хотите двухстороннюю привязку, используйте = вместо @. Таким образом, изменения в директиве к этим переменным будут отражены в контроллере.

Ссылка на статью о разметке области: создание пользовательских директив AngularJS

  • 0
    все еще это прибывает как неопределенное, !!
  • 0
    Я вижу, что контроллеры выполняются до выполнения директив, возможно, вы проверяете что-то внутри контроллера, прежде чем директива сможет выполнить и изменить его?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню