2014-07-16 2 views
0

바인딩 문제가 있습니다. 표시 할 개체의 세부 텍스트에 HTML 코드가 포함되어 있으므로 "ng-bind-html"지시문을 사용합니다. 불행히도 개체가 변경되면 텍스트가 업데이트되지 않습니다. 'title'과 'kurztext'는 값을 변경하지만 'langtext'(html 바운드)는 아닙니다.AngularJS : 바인딩 바인딩 ng-bind-html

자바 스크립트에서
<div class="content scrollContainer" ng-model="selectedItem"> 
    <h2 class="header">{{selectedItem.titel}}</h2> 
    <div class="kurztext" ng-show="selectedItem.kurztext">{{selectedItem.kurztext}}</div> 
    <div class="langtext" ng-bind-html="selectedItem.langtext"></div> 
</div> 

난 그냥 배열에서 객체를 선택하고 표시되는 항목을 변경 $ scope.selectedItem에 할당 : 여기 내가 사용하는 코드입니다. 다음은 내 JS 코드입니다 (문제와 관련이 없어야 함).

var items; 

var app = angular.module("app", ["ngSanitize"]); 

app.controller("MainCtrl", function ($scope, $sce){ 
    $scope.items = items; 
    $scope.selectedItem = $scope.items[0]; 

    $scope.showItem = function(item){ // called on click on list item 
     $scope.selectedItem = item; 
    } 

    $scope.openItemLink = function(id){ 
     for (var i=0; i<$scope.items.length; i++){ 
      if ($scope.items[i].uid==id){ 
       $scope.showItem($scope.items[i]); 
       break; 
      } 
     } 
    } 

    $scope.getLink = function(id){ 
     var it = 0; 
     for (var i=0; i<$scope.items.length; i++){ 
      if ($scope.items[i].uid==id){ 
       it = $scope.items[i]; 
       return it.titel; 
      } 
     } 
     return "----"; 
    } 
}); 

아이디어가 있으십니까?

+0

당신은 jsfiddle가 있습니까? – vittore

답변

0

당신은 내가 알고

$scope.details = $sce.parseAsHtml($scope.details); 

컨트롤러

App.controller(
    'Init', 
    [ 
     '$scope', '$sce', 
     function($scope, $sce) 

및 코드에서

var App = angular.module('process', ['ngSanitize']); 

을 각-sanitize.js을 추가하고 모듈에, 그것을 소독해야 그렇게하지 않으면 작동하지 않습니다.

문서에 따라

By default, the innerHTML-ed content will be sanitized using the $sanitize service. 
To utilize this functionality, ensure that $sanitize is available, 
for example, by   including ngSanitize in your module's dependencies (not in core Angular.) 
You may also bypass sanitization for values you know are safe. 
To do so, bind to an explicitly trusted value via $sce.trustAsHtml. 
See the example under Strict Contextual Escaping (SCE). 
+0

답변 해 주셔서 감사합니다. 이미 $ sanitize를 포함 시켰습니다. 위의 질문에 JS 코드를 추가했습니다. 문제는 내가 수동으로 세부 텍스트를 조작하지 않지만 개체 속성을 직접 사용한다는 것입니다. 대신 오브젝트를 변경 한 다음 세부 텍스트를 포함하는 다른 변수를 생성해야합니까? – updatestage

+0

네, 좋은 해결책이 될 수 있습니다. 테스트 해주세요. – ThomasP1988