lodash _.include не оценивает в true или false в угловом представлении

0

Я установил $rootScope._ = window._; in app.run and $scope._ = _; $rootScope._ = window._; in app.run and $scope._ = _; в контроллере. Однако, когда я пытаюсь оценить через _.includes, переменные внутри оцениваются отлично (я вижу это, проверяя элемент), но ng-disabled не оценивает какое-либо логическое значение.

<li data-ng-repeat="acLink in accordion.links">
    href="#/{{acLink.domain}}/{{acLink.id}}" uib-tooltip="{{acLink.title}}" ng-disabled="_.includes({{allowedRoles}},{{acLink.role_d}})" style="color:#4d4d4d">{{acLink.title}}</a>
</li>

<a href="#/abc/home" uib-tooltip="CBOE Home" ng-disabled="_.includes(["abc", "xyz"],'abc')" style="color:#4d4d4d" class="ng-binding" aria-disabled="false"> Home</a>

Я получаю следующую ошибку:

angular.min.js:103 Error: [$parse:syntax]
 at http://localhost:63342/dashboard_core/vendor/angular/angular.min.js:6:416
    at hb.throwError (http://localhost:63342/dashboard_core/vendor/angular/angular.min.js:190:254)
    at hb.primary (http://localhost:63342/dashboard_core/vendor/angular/angular.min.js:189:477)
    at hb.unary (http://localhost:63342/dashboard_core/vendor/angular/angular.min.js:197:82)
    at hb.multiplicative (http://localhost:63342/dashboard_core/vendor/angular/angular.min.js:196:324)
    at hb.additive (http://localhost:63342/dashboard_core/vendor/angular/angular.min.js:196:182)
    at hb.relational (http://localhost:63342/dashboard_core/vendor/angular/angular.min.js:196:48)
    at hb.equality (http://localhost:63342/dashboard_core/vendor/angular/angular.min.js:195:418)
    at hb.logicalAND (http://localhost:63342/dashboard_core/vendor/angular/angular.min.js:195:294) <a href="#/{{acLink.domain}}/{{acLink.id}}" uib-tooltip="{{acLink.title}}" ng-disabled="_.includes({{allowedRoles}},{{acLink.role_d}})" style="color:#4d4d4d" class="ng-binding">
  • 0
    Лучше создать функцию, чем встроенный JS.
Теги:
lodash

2 ответа

0

Я неправильно понял фрагмент кода. Теперь я вижу, что вы генерируете те значения, которые хотите включить, используя интерполяцию. В этом случае предложение Тушара переместить функцию в код вашего контроллера, а не передавать lodash в представление, является лучшим вариантом.

// HTML
ng-disabled="includes(allowedRoles, acLink.role_d)"

// JS
$scope.includes = function(list, item) {
    _.includes(list, item);
}
0

вы должны создать для этого отдельную функцию. пример:

$scope.isDisabled = function(){
    return _.includes(["abc", "xyz"],'abc');
};

<a href="#/abc/home" uib-tooltip="CBOE Home" ng-disabled="isDisabled()" style="color:#4d4d4d" class="ng-binding" aria-disabled="false"> Home</a>

Ещё вопросы

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