2016-05-10 44 views
0

我在angularJS新的變化值,這裏是我的問題: 我想知道什麼是這樣做的語法:我想價值放到'0'如果user.fields[5].value=undefined我試圖 這與ng-if,但它不工作,我不知道的語法,我不知道如果ng-if是適合做這個。也許ng-init更好,我不知道你能幫我嗎?NG-在鑑於

這裏是我的代碼:

ng-if="user.fields[5].value==undefined[user.fields[5].value='0']">{{user.fields[5].value}} 

回答

1

你可以做到這一點像:

這應該甚至工作,但我不會勸它:

<div ng-if="user.fields[5].value==undefined"> 
    <div ng-init="user.fields[5].value='0'">{{user.fields[5].value}}</div> 
</div> 

做到這一點,正確的方法是在使用控制器手錶$:

$scope.$watch(function(){return user.fields[5];}, function(newValue){ 
    if(newValue===undefined){ 
     user.fields[5].value='0'; 
    } 
}); 

但你如何得到該領域的未定義?你不應該需要一個

編輯:關於使用API​​您的評論:

那麼你不應該這樣做,在你的控制器無論在視圖中。你應該做的是,在服務層的東西,看起來像:

//service layer return the promise 
return $http.get('API...').then(function(response){ 
    var data = response.data; 
    [.. format your data ...] 
    return data;// don't forget to return it so your controller will have those formatted data : 
}); 
//controller layer 
myService.getData().then(function(data){ 
    // CLEAN data!!!! 
}); 
+0

是的,你是對的,但我收到來自API的數據並且數據沒有顯示,因爲我希望所以我需要做一些修改。 – moskitos

+0

然後有一個更好的方法來使用promise鏈來做到這一點:看看我的編輯。 – Walfrat

+0

非常感謝您的文章!這非常有幫助! – moskitos

0

我不認爲ng-if是這樣做的好方法!

正如你可以看到hereng-if創建或刪除DOM元素,如<div><p> ...

我認爲這樣做是做你的控制器裏面最簡單的方法。

+0

我不能在控制器內部完成它,因爲我沒有在我的帖子中指出,但是我們在ng-repeat中,所以它不會在我想要的時候工作,它不會在ng-repeat的循環中迭代。 – moskitos

0

理想AngularJS內置指令ng-ifng-switchng-init等DOM中使用,在條件基礎上工作除ng-class之外的作業。

如果您需要爲任何model賦值,那麼應該只在.js文件中執行。一旦分配,您可以在HTML DOM中使用它。

希望你很清楚。

+0

非常感謝,這非常清楚! – moskitos