2013-02-10 29 views
1

財產 '的nodeValue' 我有兩個指令:AngularJS,NG-交換機發生故障時,如果沒有裹成格,並提供:無法設置的不確定

app.directive('uiElement', function() { 
    return { 
    restrict: 'A', 
    replace: true, 
    scope: {element: "=uiElement", search: "=search"}, 
    templateUrl: "/views/uiElement.html", 
    link: function (scope, elem, attrs) { 
     scope.isImage = function() { 
     return (scope.element.type === 'image/png' || scope.element.type === 'image/jpeg'); 
     }; 
     scope.isList = function() { 
     return (scope.element.type === 'text/list'); 
     }; 
     scope.isTodo = function() { 
     return (scope.element.type === 'text/todo'); 
     }; 
    } 
    }; 
}); 

,關聯的模板:

<article class="uiElement" ng-class="{typeImage: isImage(), typeList:isList(), typeTodo:isTodo()}" ng-switch on="element.type"> 
    <div><div class="inside" ng-switch-when="image/png"> 
    <i ui-image="element"></i> 
    </div></div> 
    <div><div class="inside" ng-switch-when="image/jpeg"> 
    <i ui-image="element"></i> 
    </div></div> 
    <div><div class="inside" ng-switch-default>{{element.name}}</div></div> 
</article> 

正如你可以看到每個ng-switch-when有:

<div><div class="inside" ng-switch-default>{{element.name}}</div></div> 

雙DIV,我覺得這是不好的模板。但是,如果我刪除的div:

<article class="uiElement" ng-class="{typeImage: isImage(), typeList:isList(), typeTodo:isTodo()}" ng-switch on="element.type"> 
    <div class="inside" ng-switch-when="image/png"> 
    <i ui-image="element"></i> 
    </div> 
    <div class="inside" ng-switch-when="image/jpeg"> 
    <i ui-image="element"></i> 
    </div> 
    <div class="inside" ng-switch-default>{{element.name}}</div> 
</article> 

更新:我得到這個錯誤:

TypeError: Cannot set property 'nodeValue' of undefined 
    at Object.<anonymous> (http://127.0.0.1:3003/js/angular.min.js:47:448) 
    at Object.applyFunction [as fn] (http://127.0.0.1:3003/bubble/5116f5a9cfbecf42ad000006:440:50) 
    at Object.e.$digest (http://127.0.0.1:3003/js/angular.min.js:84:307) 
    at Object.e.$apply (http://127.0.0.1:3003/js/angular.min.js:86:376) 
    at Object.$delegate.__proto__.$apply (http://127.0.0.1:3003/bubble/5116f5a9cfbecf42ad000006:500:30) 
    at e (http://127.0.0.1:3003/js/angular.min.js:92:400) 
    at n (http://127.0.0.1:3003/js/angular.min.js:95:472) 
    at XMLHttpRequest.q.onreadystatechange (http://127.0.0.1:3003/js/angular.min.js:96:380) 

但是如果我使用的模板代碼,而不的div直接進入HTML頁面(不使用指令,它的工作原理)

回答

1

我遇到了同樣的問題用一個稍微不同的錯誤:

 
TypeError: Cannot read property 'childNodes' of undefined 
    at compositeLinkFn (angular.js:3841:35) 
    at nodeLinkFn (angular.js:4217:24) 
    at compositeLinkFn (angular.js:3827:14) 
    at nodeLinkFn (angular.js:4217:24) 
    at angular.js:4358:15 
    at nodeLinkFn (angular.js:4217:24) 
    at angular.js:4357:13 
    at angular.js:8625:11 
    at wrappedCallback (angular.js:6586:59) 
    at angular.js:6623:26 

這是與AngularJS v1.0.1

我還可以確認圍繞我的ng-switch-when與另一個解決了問題。但是,知道它爲什麼會發生,以及如何避免它會很好。

2

我也有類似的問題。我不知道爲什麼,但刪除指令的replace: true(將其設置爲false)解決了這個問題。

也許我應該提出這個問題。

3

我有這個相同的錯誤信息。代碼是這樣的:

我移動div我編輯上雙div元素(這些順序並不重要),它工作正常。不確定問題是什麼,但似乎嵌套的div是一個因素。

2

我有

<select ng-model="approvals.TimeFilterSelected" 
       ng-options="item.name for item in approvals.TimeFilterSelect"></select> 

     <p>Selected: {{approvals.TimeFilterSelected || 'None'}}</p> 

同樣的問題如果代碼是在div嵌套這是保持NG控制器股利後了一些水平 - 它不到風度的工作。在控制器div正常工作後移動。如果我們想要保持html的相同結構,我們應該在這些情況下做什麼?這可能是角度錯誤嗎?我沒有看到我的HTML格式有任何問題。

2

我有完全相同的問題。

我是用我的指令的模板中一個jQuery組件和我初始化它像這樣的控制器:

$element.find('.crappy-component-target').crappyComponent(); 

事實證明,這種組件/庫與角度搞亂。 有兩個解決問題的對策:

  1. 移動你的指令的鏈接功能內組件的初始化代碼。
  2. .crappy-component-target元素包裝在<div>元素內。

以上任何一個都解決了我的問題。 我想這是很多案例,蹩腳的JQuery風格的組件不會與Angular一起使用。而且大部分時間它都是Angular承擔責任......

+0

與TinyMCE有同樣的問題。用「div」包裝後問題消失了。感謝您的提示 – 2017-04-19 20:15:35

+0

同樣的問題,有一個ngClick指令不起作用的按鈕(沒有控制檯錯誤,只是沒有觸發)。有一個'textarea',我在之前的幾個元素上初始化Code​​Mirror。在'div'中包裝'textarea'確實有效。 – Knyri 2017-07-12 12:08:47