0

我的模型是填充在控制器,當我綁定數據行爲就像它在那裏,但輸入框是空白。只要我輸入一個值,一切正常。但是,如果默認值爲空白,這會讓我的用戶感到困惑。輸入[數字]不顯示使用角度和嘰嘰喳喳引導值

<div class="row" ng-controller="RangeInputCtrl"> 
    <div class="col-md-12"> 
     <label class="leftwall"> 
      Value: 
      <input type="number" class="form-control" 
        ng-model="percentOfMax.current" 
        min="{{percentOfMax.min}}" 
        max="{{percentOfMax.max}}" 
        ng-change="changeValue()" />     
     </label> 
    </div> 
</div> 

NG-值是無用的這個指令,由於角劫持輸入元件。代碼在沒有min和max的情況下工作得更糟,所以我知道它們是必需的(或者至少需要採取行動)。

我包裹在一個標籤輸入指令,由於Twitter的引導3

(function() { 
    'use strict'; 
    var controllerId = 'RangeInputCtrl'; 

    angular.module('app').controller(controllerId,['$scope', buildRangeInput]); 

    function buildRangeInput($scope) { 
     $scope.percentOfMax = InitCalcPercentOfMax($scope); 

     $scope.changeValue = function() { 
      var percentOfMax = $scope.percentOfMax; 
      $scope.percentOfMax = calcPercentOfMax(percentOfMax); 
     } 
    } 
})(); 

有一個功能,而不是這裏和大家分享花費$範圍,從一個複雜的對象建立最初的數據結構。這裏沒有顯示。 InitCalcPercentOfMax已經過測試並按計劃運行。它是外部的,並且由於代碼重用而單獨調用。

其他函數calcPercentOfMax(percentOfMax)用於重新計算已經拉出的某些指令(用於故障排除)中使用的公式。

總之地方我一定有什麼作用或張貼錯了,我只是沒有看到它。

我有console.log([一些表達式])全部,看看數據是不正確的或曾經空白,但percentOfMax.current值總是至少有一個0,所以我仍然不看看我從哪裏得到一個空白。

控制檯沒有錯誤。如果我輸入<span>{{percentOfMax.current}}</span>,我會在第一次加載時得到正確的值。

的價值是存在的模型,它是在輸入框中只是空白。

我想這是所有的細節,如果我錯過了一些東西,我會嘗試儘快與編輯回覆。

基於在角度聊天室的討論,我做了以下更改。

var d = $q.defer(); 

var p = d.promise; 

//If I leave this off, it never resolves. So there is nothing in the directive to trigger resolve. 
d.resolve(function() { 
    return InitCalcPercentOfMax($scope); 
}()) 

$scope.percentOfMax = p.then(function (POM) { 
    $scope.percentOfMax = POM; 
}); 

我還加了<span>{{percentOfMax}}</span>回到了我的觀點。我可以看到承諾開火,我可以看到預期數據在我的precentOfMax中,但輸入框仍爲空。

有人問之前,我使用的版本1.2.14 Angular.js從的NuGet

+0

嘗試: '的setTimeout(函數(){ d.resolve(函數(){// 返回InitCalcPercentOfMax($範圍); }) },2000); $ scope.percentOfMax = p.then(函數(){ //$scope.percentOfMax = POM; $ scope.percentOfMax = InitCalcPercentOfMax($範圍); $ scope.percentOfMax = calcPercentOfMax($ scope.percentOfMax) ; });' 沒有影響 – Brian

回答

0

InitCalcPercentOfMax($ scope)以字符串形式返回.current。 CalcPercentOfMax沒有糾正它,但知道如何使用字符串作爲數字。

由於輸入類型是數字,新數值導致.current更改爲數字,因此其值已顯示出來。

花了希臘午餐看到最初的價值被引用。

0

它看起來像它應該工作下載,我的猜測是,你要麼你已經錯過了控制檯上的錯誤,或者還有其他一些邏輯錯誤。這個JSBin的例子是一個簡化版本,它的工作原理如下:http://jsbin.com/zumedezu/1/edit

嘗試更改Value:Value: {{percentOfMax.current}}以輸出當前值。

難道InitCalcPercentOfMax執行角外的計算異步?

+0

控制檯沒有錯誤。如果我輸入' {{percentOfMax.current}}'我在第一次加載時得到正確的值。 該值在模型中存在,它在輸入框中只是空白。 – Brian